首页 > 技术文章 > group by与where having的使用

xxswkl 2020-05-08 16:14 原文

当两个表联结后,group by 后面的列如果在select后面出现了,可以直接进行groupby,否则最好加上表名,如果不加表名,且该列是重复列的话,会报错,

where和group by可以连用,但where子句中是不能用聚集函数作为条件表达式的,想要用聚合函数做筛选可以再group by后面跟having做筛选

参考:https://blog.csdn.net/weixin_37609825/article/details/79967246

由于select子句的运行顺序在group by, having等字句之后,group by, having子句中不能使用select中确定的别名;where子句中不能使用汇总函数;这是因为group by在where之后执行,汇总函数必须在group by之后执行,如count函数就是groupby某列时,再count另一列才有意义,否则在where的时候count某一列是没有意义的,

-- 运行顺序
select 性别,count(*) as '学生人数' -- 4
from student -- 1
where 出生日期 > '1990-01-01' -- 2
group by 性别; -- 3

 

 

推荐阅读