MySQL:GROUP BY 分组查询

分组查询是SQL中一个非常强大的功能,它允许我们将数据按照一个或多个字段进行分组,并对每个分组进行聚合计算(如求和、平均值、最大值、最小值等)。在MySQL中,我们使用 GROUP BY 关键字来实现分组查询。

核心语法

SELECT column_1, column_2, ..., AGGREGATE_FUNCTION(column_N)  
FROM table_name  
WHERE condition  
GROUP BY column_1, column_2, ...  
HAVING condition  
ORDER BY column_A;
  • SELECT 子句:选择需要显示的列,可以是普通列名,也可以是聚合函数的结果。
  • FROM 子句:指定查询的表名。
  • WHERE 子句(可选):在分组前对记录进行筛选。
  • GROUP BY 子句:指定分组的列名,MySQL会按照这些列的值将记录分组。
  • HAVING 子句(可选):在分组后对分组结果进行筛选。注意,HAVING通常与聚合函数一起使用,因为WHERE子句无法直接对聚合函数的结果进行筛选。
  • ORDER BY 子句(可选):对查询结果进行排序。
执行顺序

MySQL 会在 FROMWHERE 语句之后,HAVING, SELECT, DISTINCT, ORDER BYLIMIT 子句之前执行 GROUP BY :
在这里插入图片描述

单独使用 GROUP BY

单独使用 GROUP BY 关键字时,查询结果会只显示每个分组的第一条记录,相当于 DISTINCTDISTINCT 相当于一种特殊的分组查询。

DISTINCT 不同的是,GROUP BY对结果进行排序,而 DISTINCT 不会。如果二者一同使用,查询结果会进行排序。

MySQL 8.0删除了GROUP BY子句的隐式排序。因此,如果使用MySQL 8.0+,会发现上面使用GROUP BY子句查询的结果集没有排序。

GROUP 和 GROUP_CONCAT() 函数

GROUP BY 关键字可以和 GROUP_CONCAT() 函数一起使用。GROUP_CONCAT() 函数会把每个分组的字段值都显示出来

SELECT sex, GROUP_CONCAT(name) 
FROM student
GROUP BY sex;
''&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值