group by
是将表中的数据按照一个或者多个字段进行分组,分组后的结果是聚合起来的,我们只能对分组的数据进行聚合操作,无法对分组中的每一个的所有数据进行具体的查询
语法
select 列1[,...列N-1],聚合函数(列N)
from 表名
group by 列1[,...列N-1]
使用group by
时,要查询的字段要么跟在group by
后面,要么被聚合函数使用,否则会出现语法错误

作用于单列
表中如果存在null
,那么分组会把null
也进行分组

结合聚合函数,可以进行分组数据的数量、总量等查询

作用与多列
group by
作用于多列的时候,只有多列的数据相同才会把其作为分组

having
- having主要是对group by分组后的组数据进行过滤,having 子句中的每一个元素也必须出现在select列表中
- having子句限制的是组,而不是行。where子句中不能使用聚集函数,而having子句中可以。
网友评论