group by 和 having 一般都与聚合函数使用,例如:sum count 等等
为什么呢,举个例子
表1
a b
1 s
1 d
1 f
select a,b from 表1 group by a 在不报错的情况下返回什么样的呢
a b
s
1 d
f
会出现一对多的情况 。
如果,group by 与 聚合函数用呢
select a,count(b) from 表1
结果: a b
1 3
HAVING子句可以让我们筛选成组后的各组数据,WHERE子句在聚合前先筛选记录.也就是说作用在GROUP BY 子句和HAVING子句前.
而 HAVING子句在聚合后对组记录进行筛选。