在MySQL中,group_concat(expr) 函数是聚合函数,用于将分组中的多个字符串连接成一个字符串,即返回分组内所有值的连接字符串(默认‘,’分割)

功能语法
基础分组合并SELECT group_column, GROUP_CONCAT(column) FROM table GROUP BY group_column
自定义分隔符SELECT GROUP_CONCAT(column SEPARATOR '分隔符') FROM table
去重合并SELECT GROUP_CONCAT(DISTINCT column) FROM table
排序后合并SELECT GROUP_CONCAT(column ORDER BY sort_column DESC) FROM table
多字段组合SELECT GROUP_CONCAT(CONCAT(col1, '(', col2, ')')) FROM table

我们先准备一张dotcpp_users表格:

dotcpp_users表格

然后分别实操group_concat()函数:

1. 基础分组合并:表里有10个Dotcpp编程用户,有两个性别男、女,我们可以按照性别分组,收集不同的名字。

select group_concat(nickname) 
from dotcpp_users 
group by gender;

其查询结果如下:

 基础分组合并


2. 自定义分隔符:表里有10个Dotcpp编程用户,我们想要收集所有人的个性签名,并通过‘|’进行分割。

select group_concat(signature separator '|') 
from dotcpp_users;

自定义分隔符


3. 去重合并:表里有10个Dotcpp编程用户,每个用户都有自己的个性签名,我们想知道所有用户的个性签名是什么。由于存在重复签名,所以我们可以去重后再查询。

select group_concat(distinct signature)
from dotcpp_users;

去重合并


4. 排序后合并:表里有10个Dotcpp编程用户,目前表格是按升序排序,我想要(desc)降序排序然后查看所有人的昵称:

select group_concat(nickname order by id_code desc)
from dotcpp_users;

排序后合并


5. 多字段组合:表里有10个Dotcpp编程用户,首先先进行男女分组,然后组合昵称和签名这两个字段,比如dotcpp_user1(coding)。

select gender, group_concat(concat(nickname, '(', signature, ')'))
from dotcpp_users
group by gender;

 多字段组合


总结:在MySQL中,我们可以通过group_concat()函数将分组内的多个值连接成一个字符串。

点赞(0)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)