Having 子句
解决了在分组中使用聚合函数的问题
考虑这么一个业务场景: 查询部门平均底薪超过2000元的部门编号
我们很自然想到下面这条 SQL 语句
但事实上这句SQL语句是有逻辑错误的。我们回想SQL的执行顺序FROM -> WHERE -> GROUP BY -> SELECT -> ORDER BY -> LIMIT。我们需要先通过WHERE, GROUP BY 确定了统计范围以后才能使用聚合函数AVG进行统计,而上面的SQL语句在WHERE中就使用了聚合函数,相当于没有指定聚合的范围。
正确的做法是使用HAVING
再来一个例子
总结一下
HAVING 的作用是 解决了在分组中使用聚合函数的问题
SQL的执行顺序FROM -> WHERE -> GROUP BY -> SELECT -> ORDER BY -> LIMIT
Last updated