MySQL中group_concat函数用法小结

 更新时间:2024年11月22日 10:14:38   作者:安静的_显眼包O_o  
MySQL中group_concat函数用于将groupby产生的同一个分组中的值连接成一个字符串,支持去重、排序和自定义分隔符,需要的朋友们下面随着小编来一起学习学习吧

一、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,'销售部');

在这里插入图片描述

二、group_concat函数的语法

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

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

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

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

select department,group_concat(emp_name) from emp group by department;

在这里插入图片描述

select department,group_concat(emp_name SEPARATOR ',') as e_name from emp group by department;

在这里插入图片描述

参数解释:

  • emp_name:要合并的列名。
  • SEPARATOR:可选参数,用于指定合并结果中值之间的分隔符,默认为逗号,

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

select department,group_concat(distinct emp_name) 
from emp group by department;

在这里插入图片描述

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

select department,group_concat(distinct emp_name order by salary desc) 
from emp group by department;

在这里插入图片描述

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

select department,group_concat(distinct emp_name order by salary desc separator '@') 
from emp group by department;

在这里插入图片描述

到此这篇关于MySQL中group_concat函数用法小结的文章就介绍到这了,更多相关MySQL group_concat函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • MySQL子查询的使用详解上篇

    MySQL子查询的使用详解上篇

    子查询是在查询语句里面再嵌套一个查询,这是因为我们在提取数据的时候有很多不知道的数据产生了依赖关系。本文为大家总结了一下MySQL数据库子查询语法规则,感兴趣的可以了解一下
    2022-08-08
  • mysql之validate_password_policy的使用

    mysql之validate_password_policy的使用

    这篇文章主要介绍了mysql之validate_password_policy的使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • MySQL 数据库整合攻略之表操作技巧与详解

    MySQL 数据库整合攻略之表操作技巧与详解

    本文详细介绍了MySQL数据库中表的创建、查看、修改和删除等操作技巧,感兴趣的朋友一起看看吧
    2024-11-11
  • windows server 2008 64位MySQL5.6免安装版本配置方法图解

    windows server 2008 64位MySQL5.6免安装版本配置方法图解

    这篇文章主要介绍了windows server 2008 64位MySQL5.6免安装版本配置方法图解,需要的朋友可以参考下
    2017-08-08
  • MySQL中MTR的概念

    MySQL中MTR的概念

    这篇文章主要介绍了MySQL中MTR的概念,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下
    2020-11-11
  • MySQL表聚合与联合查询的实现

    MySQL表聚合与联合查询的实现

    MySQL聚合与联合查询是数据库查询中常用的技术,它们能够从多个数据源中提取和组合数据,以获得有用的信息和结果,本文就来介绍下MySQL聚合与联合查询,感兴趣的可以了解一下
    2023-10-10
  • MySQL性能优化 出题业务SQL优化

    MySQL性能优化 出题业务SQL优化

    根据用户的作答结果出练习卷,题目的优先级为:未做过的题目>只做错的题目>做错又做对的题目>只做对的题目。
    2010-08-08
  • MySQL问答系列之如何避免ibdata1文件大小暴涨

    MySQL问答系列之如何避免ibdata1文件大小暴涨

    MySql innodb如果是共享表空间,ibdata1文件会越来越大,所以下面这篇文章主要给大家介绍了关于MySQL问答系列之如何避免ibdata1文件大小暴涨的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-09-09
  • 检查mysql是否成功启动的方法(bat+bash)

    检查mysql是否成功启动的方法(bat+bash)

    这篇文章主要介绍了检查mysql是否成功启动的方法(bat+bash),如果mysql没有启动则开启服务,需要的朋友可以参考下
    2016-06-06
  • 详解SparkSql输出数据的方式

    详解SparkSql输出数据的方式

    在处理数据时,SparkSql提供了多种数据输出方式,包括普通文件输出、保存到数据库和保存到Hive,普通文件输出支持追加模式、覆写模式、报错模式和忽略模式,本文介绍SparkSql输出数据的方式,感兴趣的朋友一起看看吧
    2024-11-11

最新评论