mysql之group by语句详解

一、查询语句 group by 分组

  • group by 关键字可以根据一个或多个字段对查询结果进行分组
  • group by 一般都会结合Mysql聚合函数来使用
  • 如果需要指定条件来过滤分组后的结果集,需要结合 having 关键字;原因:where不能与聚合函数联合使用 并且 where 是在 group by 之前执行的

group by 的语法格式:

GROUP BY  <字段名>[,<字段名>,<字段名>]

二、group by 后面有多个字段

如果group by后面有多个字段,其实和 order by 后的多个字段是差不多的。例如:group by a , b ;将字段a,b共有的多条数据合并,不同的数据则不合并。具体例子如下:

三、group by 后面的having

group by 后面的having是对分组后的字段进行再次过滤筛查,一般是用聚合函数。如下例子:(对字段a 分组,并且在分组前的数量要大于1)

select a, 
    count(1),
    max(b)
from f 
where a like 'X%'
group by a 
    having count(a) > 1

或者也可以对非分组字段进行聚合函数的筛选

四、HAVING子句可包含一个或多个用AND和OR连接的谓词

五、用HAVING句后,在select后 用count(*)的不同

 

SELECT COUNT(*),Ssex FROM Student GROUP BY Ssex;

 

六、group by 后的关键字ALL

group by 后的关键字All,如果通过where 条件过滤后,才进行group by 。那么关键字All就是把不满足的条件的数据也全都展示出来。

七、group by 后的关键字CUBE和ROLLUP

首先需要说明的是Group By All 语句是不能和CUBE 和 ROLLUP 关键字一起使用的。

八、使用字段别名的注意事项

由于mysql的执行顺序如下:

from
on
join
where
group by
select
having
order by
limit

由上可知:select后的字段别名,只能在select执行之后的,才能使用。

猜你喜欢

转载自blog.csdn.net/m0_69057918/article/details/132146466