having的作用:用来过滤数据
使用要求:
1、如果过滤条件中使用了聚合函数,则必须使用HAVING来替换WHERE,否则报错。
2、HAVING必须使用在 GROUP BY 的后面。
3、HAVING不能单独使用,要和GROUP BY一起使用。
HAVING 和 SELECTE 的对比:
1、从适用范围上讲,HAVING 适用范围更广。
2、如果需要通过连接从关联表中获取需要的数据,where是先筛选后连接,而having是先连接后筛选。
select 语句的完整结构:
SELECT......,......(存在聚合函数)
FROM ......JOIN ...... ON 多表的连接条件(关联查询)
WHERE ......AND.......(不包含聚合函数的过滤条件)
GROUP BY .......(分组操作)
HAVING ......(包含聚合函数的过滤条件)
ODER BY......(ASC,DESC)(排序)
LIMIT......(分页)
SELECT 语句的执行过程:
FROM ------> ON ------>(LEFT/RIGHT JOIN ) ------>WHERE------> GROUP BY------->HAVING---
--->SELECT------>DISTINCT------>ODER BY ------> LIMIT