MySQL GROUP_CONCAT函数的使用 2022/09/14

🔥group by应用场景🔥

使用group by可以分组统计每个部门有多少员工。假如,除了统计每个部门的员工数量之外,还想知道具体是哪些员工(员工列表),又该如何实现呢?

idnamedept
1张三部门A
2王二部门B
3大哥部门A
4小弟部门B
5小妹部门A
变成
deptcountname_list
部门A3张三、大哥、小妹
部门B2王二、小弟

🔥 group_concat的使用 🔥

group_concat配合group by一起使用,用于将某一列的值按指定的分隔符进行拼接,MySQL默认的分隔符为逗号。

group_concat语法

group_concat ([ distinct ] column_name [ order by column_name asc / desc ] [separator '分隔符' ] )
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)
select dept,group_concat(name) from employee group by dept;
+-------+--------------------+
| dept  | group_concat(name) |
+-------+--------------------+
| 部门A | 张三               |
| 部门B | 李四,张小妹        |
+-------+--------------------+
2 rows in set (0.01 sec)
select * from employee;
+----+--------+------+--------+-------+
| id | name   | sex  | salary | dept  |
+----+--------+------+--------+-------+
|  1 | 张三   | 男   |   5500 | 部门A |
|  2 | 李四   | 男   |   4500 | 部门B |
|  3 | 张小妹 | 女   |   4500 | 部门B |
+----+--------+------+--------+-------+
3 rows in set (0.00 sec)
select dept,count(*) from employee group by dept;
+-------+----------+
| dept  | count(*) |
+-------+----------+
| 部门A |        1 |
| 部门B |        2 |
+-------+----------+
2 rows in set (0.00 sec)
select dept,count(*),group_concat(name) from employee group by dept;
+-------+----------+--------------------+
| dept  | count(*) | group_concat(name) |
+-------+----------+--------------------+
| 部门A |        1 | 张三               |
| 部门B |        2 | 李四,张小妹        |
+-------+----------+--------------------+
2 rows in set (0.00 sec)
select dept,count(*),group_concat(name order by name desc) from employee group by dept;
+-------+----------+---------------------------------------+
| dept  | count(*) | group_concat(name order by name desc) |
+-------+----------+---------------------------------------+
| 部门A |        1 | 张三                                  |
| 部门B |        2 | 李四,张小妹                           |
+-------+----------+---------------------------------------+
2 rows in set (0.00 sec)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MySQL中的`group_concat`函数是一种非常实用的函数,它可以将同一个分组下的行拼接一起。该函数的语法如下:`GROUP_CONCAT([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator ‘分隔’])`。 使用`group_concat`函数的技巧如下: 1. 建表和插入数据:首先需要创建一个表,并插入测试数据。 2. 基本查询:可以使用`SELECT * FROM table_name`语句来查询表中的数据。 3. 使用`group_concat`函数:可以使用`SELECT id, group_concat(age) FROM table_name GROUP BY id`语句来根据id分组,将age字段的拼接成一行,使用逗号进行分隔。 4. 自定义分隔:如果想要使用自定义的分隔,可以在`group_concat`函数使用`separator`关键字,如`SELECT id, group_concat(age separator ';') FROM table_name GROUP BY id`,这样就可以将age字段的拼接成一行,使用分号进行分隔。 所以,MySQL中的`group_concat`函数可以用来将同一分组下的行拼接一起,并可以自定义分隔。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [mysql GROUP_CONCAT函数详解](https://blog.csdn.net/liqinglonguo/article/details/131097681)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

️ 邪神

你自己看着办,你喜欢打赏我就赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值