MySQL中group_concat函数用法总结

MySQL中group_concat函数用法总结MySQL中group_concat函数用法总结一、group_concat函数的功能将groupby产生的同一个分组中的值连接起来,返回一个字符串结果。group_concat函数首先根据groupby指定的列进行分组,将同一组的列显示出来,并且用分隔符分隔。由函数参数(字段名)决定要返回的列。例如:createtableemp(emp_idintprimaryke…

大家好,又见面了,我是你们的朋友全栈君。

MySQL中group_concat函数用法总结

一、group_concat函数的功能

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

create table emp(
    emp_id int primary key auto_increment comment '编号',
    emp_name char(20) not null default '' comment '姓名',
    salary decimal(10,2) not null default 0 comment '工资',
    department char(20) not null default '' comment '部门'
);

insert into emp(emp_name,salary,department) 
values('张晶晶',5000,'财务部'),('王飞飞',5800,'财务部'),('赵刚',6200,'财务部'),('刘小贝',5700,'人事部'),
('王大鹏',6700,'人事部'),('张小斐',5200,'人事部'),('刘云云',7500,'销售部'),('刘云鹏',7200,'销售部'),
('刘云鹏',7800,'销售部');

执行如下查询及结果:

select group_concat(emp_name) from emp;
+----------------------------------------------------------------------------------------+
| group_concat(emp_name)                                                                 |
+----------------------------------------------------------------------------------------+
| 张晶晶,王飞飞,赵刚,刘小贝,王大鹏,张小斐,刘云云,刘云鹏,刘云鹏                           |
+----------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> select department,group_concat(emp_name) from emp group by department;
+------------+-------------------------------+
| department | group_concat(emp_name)        |
+------------+-------------------------------+
| 人事部     | 刘小贝,王大鹏,张小斐          |
| 财务部     | 张晶晶,王飞飞,赵刚            |
| 销售部     | 刘云云,刘云鹏,刘云鹏          |
+------------+-------------------------------+
3 rows in set (0.00 sec)

二、group_concat函数的语法

group_concat([distinct] 字段名 [order by 排序字段 asc/desc] [separator '分隔符'])

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

三、使用举例

group_concat(emp_name):只指定了字段名,销售部有两个同名的也全部显示出来,并且姓名的连接顺序就是表中的记录顺序,连接的分隔符为逗号,结果如下:

mysql> select department,group_concat(emp_name) from emp group by department;
+------------+-------------------------------+
| department | group_concat(emp_name)        |
+------------+-------------------------------+
| 人事部     | 刘小贝,王大鹏,张小斐          |
| 财务部     | 张晶晶,王飞飞,赵刚            |
| 销售部     | 刘云云,刘云鹏,刘云鹏          |
+------------+-------------------------------+
3 rows in set (0.00 sec)

添加了distinct参数,则销售部两个同名的员工只显示一个,结果如下:

select department,group_concat(distinct emp_name) 
from emp group by department;
+------------+---------------------------------+
| department | group_concat(distinct emp_name) |
+------------+---------------------------------+
| 人事部     | 刘小贝,张小斐,王大鹏            |
| 财务部     | 张晶晶,王飞飞,赵刚              |
| 销售部     | 刘云云,刘云鹏                   |
+------------+---------------------------------+
3 rows in set (0.00 sec)

添加了order by参数,表中的记录按salary降序排列,然后再把姓名连接起来,结果如下:

mysql> select department,group_concat(distinct emp_name order by salary desc) 
from emp group by department;
+------------+------------------------------------------------------+
| department | group_concat(distinct emp_name order by salary desc) |
+------------+------------------------------------------------------+
| 人事部     | 王大鹏,刘小贝,张小斐                                 |
| 财务部     | 赵刚,王飞飞,张晶晶                                   |
| 销售部     | 刘云云,刘云鹏                                        |
+------------+------------------------------------------------------+
3 rows in set (0.00 sec)

分隔符修改为@符号,结果如下:

mysql> select department,group_concat(distinct emp_name order by salary desc separator '@') 
from emp group by department;
+------------+--------------------------------------------------------------------+
| department | group_concat(distinct emp_name order by salary desc separator '@') |
+------------+--------------------------------------------------------------------+
| 人事部     | 王大鹏@刘小贝@张小斐                                               |
| 财务部     | 赵刚@王飞飞@张晶晶                                                 |
| 销售部     | 刘云云@刘云鹏                                                      |
+------------+--------------------------------------------------------------------+
3 rows in set (0.00 sec)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137427.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 增强的for语句可以方便地遍历数组_java遍历字符串

    增强的for语句可以方便地遍历数组_java遍历字符串增强for循环快捷键:iter+回车键。for增强for循环和普通for循环的区别普通for循环可以没有遍历的目标,增强for循环。缺点不能在这个增强循环里动态删除集合里面的内容,获取下标等。使用场景增强for循环主要就是为了方便遍历。…

    2025年12月1日
    8
  • TDA2030的功率放大电路详细教程「建议收藏」

    TDA2030的功率放大电路详细教程「建议收藏」本电路可以将是利用运放TDA2030A制作的功率放大器。电源电压为±12V至±22V。输出的最大功率为18W。该电路为深度负反馈电路,输出电压的放大倍数约为Av=R1/R2=32.3(具体放大倍数请参考模电书籍负反馈部分)。其中R4选用大功率水泥电阻,因为空载时流过R4的电流会过大。D1与D2为二极管,有黑线或者银色线的一端为负极。没有标有正负号的电容为无极电容,不需要区别正负极。标有正负…

    2022年5月30日
    50
  • linux testdisk使用教程,使用TestDisk恢复因安装Ubuntu导致的硬盘误格

    linux testdisk使用教程,使用TestDisk恢复因安装Ubuntu导致的硬盘误格前几日心血来潮想把家中的旧笔记本换成 Linux 操作系统 算是在业余生活中正式投入 Linux 的怀抱 说干就干 发行版选择了 Ubuntu 下载了 Ubuntu16 04 的 ISO 下载软碟通 制作成 U 盘启动 恩 重启电脑 U 盘引导 进入安装界面 恩 安装界面挺炫酷啊 还检测到硬盘中安装的 Win8 恩 问我是与其他系统共存还是清除并安装 既然都正式投入怀抱了 肯定只安装 Ubuntu 啊 Win8 拜拜了 恩

    2025年6月24日
    4
  • 通信原理一个月能学会吗_通信原理第六版

    通信原理一个月能学会吗_通信原理第六版Socket通信原理对TCP/IP、UDP、Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵。那么我想问:什么是TCP/IP、UDP?Socket在哪里呢?Socket是什么呢?你会使用它们吗?什么是TCP/IP、UDP?TCP/IP(TransmissionControlPro…

    2022年10月17日
    4
  • H3C 路由器 QoS 的CBQ配置

    H3C 路由器 QoS 的CBQ配置br CBQ 的配置 br 需求 br 路由器执行染色并执行 cbqbr 对内网发过来的数据包染色 br 数据包分类 br 为方便运行维护管理 供 QoS 使用的访问控制列表号码统一规范为下述命令中的号码 br acln3181 nbsp nbsp nbsp nbsp nbsp nbsp 视频业务 br br acln3182 nbsp nbsp nbsp nbsp nbsp nbsp 关键业务 1br br acln3183 nbsp nbsp nbsp nbsp nbsp nbsp 关键业务 2br br acln3184 nbsp nbsp nbsp nbsp nbsp

    2025年9月19日
    3
  • RealSense RGBD 深度摄像头 D435i 、D455 硬件结构及各个组件原理详解「建议收藏」

    RealSense RGBD 深度摄像头 D435i 、D455 硬件结构及各个组件原理详解「建议收藏」文章目录D435i硬件结构图D435i介绍视角知识补充标准镜头广角镜头长焦镜头广角镜头和长焦镜头的区别主要在于焦距不同、取景范围不同和拍摄对象不同。鱼眼镜头和广角镜头的区别IRLaserProjector介绍测距方式汇总3D结构光介绍RGB-D相机的TOF工作原理实际应用案例librealsenserealsense-rosD455D435i官方链接:https://www.intelrealsense.com/zh-hans/depth-camera-d435i/先来看一下实际图片硬件结构

    2022年9月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号