SQL编程思想:基于5种主流数据库代码实现
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人


4.3.2 WHERE与HAVING的区别

我们可以使用WHERE子句对表进行数据过滤,同时使用HAVING子句对分组结果进行过滤。例如,以下语句查询拥有2名以上女性员工的部门:

其中,WHERE子句用于检索女性员工,GROUP BY子句按照部门统计女性员工的数量,HAVING子句选择数量大于或等于2的部门。查询返回的结果如下:

只有财务部(dept_id=3)中有2名女性员工。

提示:从性能的角度来说,我们应该尽量使用WHERE子句过滤掉更多的数据,而不是等到分组之后再通过HAVING子句进行过滤。但是如果业务需求只能基于汇总之后的结果进行过滤,那就另当别论了。