加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL运用GROUP BY分组查询

发布时间:2021-06-07 07:33:19 所属栏目:MySql教程 来源:互联网
导读:GROUP BY单独使用 单独使用 GROUP BY 关键字时,查询结果会只显示每个分组的第一条记录。 例 1 下面根据 tb_students_info 表中的 sex 字段进行分组查询,SQL 语
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 将不再对第二个字段进行分组。

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读