站长网 MySql教程 MySQL运用GROUP BY分组查询

MySQL运用GROUP BY分组查询

GROUP BY单独使用单独使用 GROUP BY 关键字时,查询结果会只显示每个分组的第一条记录。 例 1下面根据 tb_students_info 表中的 sex 字段进行分组查询,SQL 语句和运行结果如下:mysql SELECT `name`,`sex` FROM tb_students_info- GROUP BY sex;+——-+-

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

例 1
下面根据 tb_students_info 表中的 sex 字段进行分组查询,SQL 语句和运行结果如下:

mysql> SELECT `name`,`sex` FROM tb_students_info
-> GROUP BY sex;
+——-+——+
| name | sex |
+——-+——+
| Henry | 女 |
| Dany | 男 |
+——-+——+
2 rows in set (0.01 sec)
结果中只显示了两条记录,这两条记录的 sex 字段的值分别为“女”和“男”。

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

例 2
下面根据 tb_students_info 表中的 sex 字段进行分组查询,使用 GROUP_CONCAT() 函数将每个分组的 name 字段的值都显示出来。SQL 语句和运行结果如下:

mysql> SELECT `sex`, GROUP_CONCAT(name) FROM tb_students_info
-> GROUP BY sex;
+——+—————————-+
| sex | GROUP_CONCAT(name)
|
+——+—————————-+
| 女 | Henry,Jim,John,Thomas,Tom |
| 男 | Dany,Green,Jane,Lily,Susan |
+——+—————————-+
2 rows in set (0.00 sec)
由结果可以看到,查询结果分为两组,sex 字段值为“女”的是一组,值为“男”的是一组,且每组的学生姓名都显示出来了。

例 3
下面根据 tb_students_info 表中的 age 和 sex 字段进行分组查询。SQL 语句和运行结果如下:

mysql> SELECT age,sex,GROUP_CONCAT(name) FROM tb_students_info
-> GROUP BY age,sex;
+——+——+——————–+
| age | sex | GROUP_CONCAT(name) |
+——+——+——————–+
| 21 | 女 | John
|
| 22 | 女 | Thomas
|
| 22 | 男 | Jane,Lily
|
| 23 | 女 | Henry,Tom
|
| 23 | 男 | Green,Susan
|
| 24 | 女 | Jim
|
| 25 | 男 | Dany
|
+——+——+——————–+
7 rows in set (0.00 sec)
上面实例在分组过程中,先按照 age 字段进行分组,当 age 字段值相等时,再把 age 字段值相等的记录按照 sex 字段进行分组。

多个字段分组查询时,会先按照第一个字段进行分组。如果第一个字段中有相同的值,MySQL 才会按照第二个字段进行分组。如果第一个字段中的数据都是唯一的,那么 MySQL 将不再对第二个字段进行分组。

本文来自网络,不代表站长网立场,转载请注明出处:https://www.tzzz.com.cn/html/jc/mysql/2021/0602/8674.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部