group by 的语法格式:
GROUP BY <字段名>[,<字段名>,<字段名>]
如果group by后面有多个字段,其实和 order by 后的多个字段是差不多的。例如:group by a , b ;将字段a,b共有的多条数据合并,不同的数据则不合并。具体例子如下:
group by 后面的having是对分组后的字段进行再次过滤筛查,一般是用聚合函数。如下例子:(对字段a 分组,并且在分组前的数量要大于1)
select a,
count(1),
max(b)
from f
where a like 'X%'
group by a
having count(a) > 1
或者也可以对非分组字段进行聚合函数的筛选
SELECT COUNT(*),Ssex FROM Student GROUP BY Ssex;
group by 后的关键字All,如果通过where 条件过滤后,才进行group by 。那么关键字All就是把不满足的条件的数据也全都展示出来。
首先需要说明的是Group By All 语句是不能和CUBE 和 ROLLUP 关键字一起使用的。
由于mysql的执行顺序如下:
from
on
join
where
group by
select
having
order by
limit
由上可知:select后的字段别名,只能在select执行之后的,才能使用。