SQL语句中where和having的区别

时间:2022-11-13 20:07:01

SQL语句中where和having的区别

where是一个约束声明,是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据。where字句中不能包含聚组函数。where语句显示特定的行。

having是一个过滤声明,是筛选满足条件的组,即在分组之后过滤数据。having字句中可以包含聚组函数。having语句显示特定的组。

例1:查询平均工资大于200000的部门

SQL语句中where和having的区别

此时只能使用having,而不能使用where。一来,我们要使用聚合语句avg;二来,我们要对聚合后的结果进行筛选(average > 3000),因此使用where会被告知sql有误。

例2:查询每个部门工资大于30000的员工个数

SQL语句中where和having的区别

where在group by之前执行,having 在group by 之后执行。

where和having 可以同时存在一个SQL语句中。