mysql学习笔记--group_concat的应用场景

大家好,我是天空之城,今天给大家带来group_concat的应用场景,当我们用group by进行数据分组之后,我们想知道分组内的具体数据,就需要用到group_concat了。

建表链接https://blog.csdn.net/littlespider889/article/details/106560626

group_concat需要和group by联合使用,用于将某一列的值按指定的分隔符进行拼接,mysql默认的分隔符是逗号。
语法:
group_ concat([distinct] column_ name [order by column_ name asc/desc ] [separator '分隔符'])
还是用上次那个employee表进行练习
先看下各个部门的人数
mysql> select dept, count(*) from employee group by dept;
+-------+----------+
| dept  | count(*) |
+-------+----------+
| 部门A |        5 |
| 部门C |        3 |
| 部门B |        5 |
+-------+----------+
再看每个组的具体名单,一条命令就出结果
mysql> select dept,group_concat(name) from employee group by dept;
+-------+------------------------------+
| dept  | group_concat(name)           |
+-------+------------------------------+
| 部门A | 张三,李小梅,李芳,张江,马小龙 |
| 部门B | 李四,王五,龙五,马小花,刘山   |
| 部门C | 李洁,欧阳辉,冯小芳

对人员的名字进行降序排序处理
mysql> select dept,group_concat(name order by name desc) from employee group by dept;
+-------+---------------------------------------+
| dept  | group_concat(name order by name desc) |
+-------+---------------------------------------+
| 部门A | 马小龙,李芳,李小梅,张江,张三          |
| 部门B | 龙五,马小花,王五,李四,刘山            |
| 部门C | 欧阳辉,李洁,冯小芳                    |
+-------+---------------------------------------+

名字中间按照分号;来分割
mysql> select dept,group_concat(name order by name desc separator ';') from employee group by dept;
+-------+-----------------------------------------------------+
| dept  | group_concat(name order by name desc separator ';') |
+-------+-----------------------------------------------------+
| 部门A | 马小龙;李芳;李小梅;张江;张三                        |
| 部门B | 龙五;马小花;王五;李四;刘山                          |
| 部门C | 欧阳辉;李洁;冯小芳                                  |
+-------+-----------------------------------------------------+


你可能感兴趣的:(mysql,python,数据分析,mysql)