当前位置:首页>维修大全>综合>

Group by子句和where子句的区别(group by 的正确用法)

Group by子句和where子句的区别(group by 的正确用法)

更新时间:2025-05-31 19:58:56

Group by子句和where子句的区别

where筛选是在分组之前筛选,筛选完之后再group by

having是分组之后再筛选,筛选完之前先group by

执行顺序:where>sum、count等聚合函数>having

所以where条件里不能有聚合函数,因为where条件在聚合函数之前执行。

若须引入聚合函数来对group by 结果进行过滤 则只能用having。(此处不多说,自己想 是先执行聚合函数还是先过滤 然后比对我上面列出的执行顺序 一看便知)

样例:selectsum(score)fromstudentwheresex='man'groupbynamehavingsum(score)>210

注意事项 :

1、where 后不能跟聚合函数,因为where执行顺序大于聚合函数。

2、where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。

3、having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。

更多栏目