MySQL HAVING子句【需要联合GROUP BY 使用】

分组查询时遇到的问题:

SELECT deptno FROM t_emp
WHERE AVG(sal)>=2000
GROUP BY deptno;

上面的示例中,因为WHERE子句的优先级是高于GROUP BY 子句的优先级,执行时WHERE 子句无法做到对每一个分组,进行条件判断。

HAVING子句的作用跟WHERE子句的作用是一样的,

都是进行条件判断,

区别是,HAVING 子句的执行顺序是紧跟在GROUP BY子句之后执行,而WHERE子句则是在GROUP BY子句之前执行(所以就无法对分组进行条件判断)

select sal, avg(sal)
from emp
group by sal
having emp.sal > 2000