MySQL的group_concat()函数简单用法

将group by产生的同一个分组中的值连接起来,返回一个字符串结果。
group_concat函数首先根据group by指定的列进行分组,将同一组的列显示出来,并且用分隔符分隔。由函数参数(字段名)决定要返回的列。

  用法:
  (1)使用distinct可以排除重复值;
  (2)如果需要对结果中的值进行排序,可以使用order by子句;
  (3)separator是一个字符串值,默认为逗号。

# group_concat可以
select name,group_concat(age) from emp group by dept;

# 例如
mysql> select * from t1;	# 表中数据
+----+-------+-----------+---------+
| id | name  | dept      | job     |
+----+-------+-----------+---------+
|  1 | jack  | 销售类    | sale    |
|  2 | rose  | 销售类    | sale    |
|  3 | tom   | 技术类    | DBA     |
|  4 | jerry | 技术类    | develop |
|  5 | kevin | 技术类    | develop |
+----+-------+-----------+---------+
5 rows in set (0.00 sec)

# 可以将单列输出
mysql> select job,group_concat(name) from t1 group by job;
+---------+--------------------+
| job     | group_concat(name) |
+---------+--------------------+
| DBA     | tom                |
| develop | jerry,kevin        |
| sale    | jack,rose          |
+---------+--------------------+
3 rows in set (0.00 sec)

# 也可以对多列使用
mysql> select job,group_concat(name,'|',dept) from t1 group by job;
+---------+---------------------------------+
| job     | group_concat(name,'|',dept)     |
+---------+---------------------------------+
| DBA     | tom|技术类                      |
| develop | jerry|技术类,kevin|技术类       |
| sale    | jack|销售类,rose|销售类         |
+---------+---------------------------------+
3 rows in set (0.00 sec)

# 可以指定分隔符号,使用separator即可
mysql> select job,group_concat(name separator ';') from t1 group by job;
+---------+----------------------------------+
| job     | group_concat(name separator ';') |
+---------+----------------------------------+
| DBA     | tom                              |
| develop | jerry;kevin                      |
| sale    | jack;rose                        |
+---------+----------------------------------+
3 rows in set (0.00 sec)

# 使用order by进行排序
mysql> select job,group_concat(name, dept order by name separator ';') from t1 group by job;
+---------+------------------------------------------------------+
| job     | group_concat(name, dept order by name separator ';') |
+---------+------------------------------------------------------+
| DBA     | tom技术类                                            |
| develop | jerry技术类;kevin技术类                              |
| sale    | jack销售类;rose销售类                                |
+---------+------------------------------------------------------+
3 rows in set (0.00 sec)
posted @   树苗叶子  阅读(230)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示