having应该是SQL中很基本的知识点,但是我最近才在项目中使用到,嗯。。只是作为辅助查询用的,就是要找出数据表中重复的记录。
where 这个关键字的作用时机是在数据表筛选数据的时候,而having的作用时机是返回的筛选的结果集后,可以理解为二次筛选。having是跟group by一起使用的,因此having后面筛选的条件可以使用聚合函数,而where不能。
举个栗子:
1.找出每个国家每个地区人数超过1000000的国家/地区
SELECT COUNTRY,REGION
FROM TB_CITY_INFO
GROUP BY COUNTRY,REGION
HAVING SUM(POPULATION)>1000000
2.找出数据表重复的记录
SELECT NAME,COUNTRY,CITY
FROM TB_USER_INFO
GROUP BY NAME,COUNTRY,CITY
HAVING COUNT(*)>1