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常用字符串函数和时间函数的相关资料,需要的朋友可以参考下
    2025-07-07
  • MySQL中的多表查询与事务操作

    MySQL中的多表查询与事务操作

    这篇文章主要介绍了MySQL中的多表查询与事务操作,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • MySQL统计今日生成create_time的数据量的方法小结

    MySQL统计今日生成create_time的数据量的方法小结

    create_time通常是一个用于表示某个实体或事件创建时间的字段,在数据库设计、日志记录或许多软件系统中常见,它存储的是一个日期或时间戳,记录了数据首次被创建的具体时刻,本文介绍了MySQL统计今日生成create_time的数据量的方法,需要的朋友可以参考下
    2024-08-08
  • 详解mysql 获取当前日期及格式化

    详解mysql 获取当前日期及格式化

    本篇文章主要介绍了mysql 获取当前日期及格式化,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2016-12-12
  • MyBatis与MySQL语法区别解析

    MyBatis与MySQL语法区别解析

    MyBatis是Java持久化框架,专注对象与SQL映射;MySQL是数据库管理系统,负责数据存储与SQL执行,两者协作完成数据操作,MyBatis简化代码,MySQL处理底层数据逻辑,本文介绍MyBatis与MySQL语法区别解析,感兴趣的朋友一起看看吧
    2025-08-08
  • 高版本Mysql使用group by分组报错的解决方案

    高版本Mysql使用group by分组报错的解决方案

    GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组,下面这篇文章主要给大家介绍了关于高版本Mysql使用group by分组报错的解决方案,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-03-03
  • 利用mysql的inet_aton()和inet_ntoa()函数存储IP地址的方法分享

    利用mysql的inet_aton()和inet_ntoa()函数存储IP地址的方法分享

    当前很多应用都适用字符串char(15)来存储IP地址(占用16个字节),利用inet_aton()和inet_ntoa()函数,来存储IP地址效率很高,适用unsigned int 就可以满足需求,不需要使用bigint,只需要4个字节,节省存储空间,同时效率也高很多
    2012-03-03
  • MySQL存储过程的查询命令介绍

    MySQL存储过程的查询命令介绍

    这篇文章主要介绍了MySQL存储过程的查询命令介绍,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • MySQL处理DB读写分离数据不一致问题的方案

    MySQL处理DB读写分离数据不一致问题的方案

    在互联网中大型项目中,读写分离应该是我们小伙伴经常听说的,这个主要解决大流量请求时,提高系统的吞吐量,本文给大家介绍了MySQL处理DB读写分离数据不一致问题的方案,需要的朋友可以参考下
    2024-02-02
  • MySQL 如何查询 JSON 数组是否包含特定的值

    MySQL 如何查询 JSON 数组是否包含特定的值

    本文给大家介绍MySQL 如何查询 JSON 数组是否包含特定的值,假设定义了一张表 School,其中字段 stages 为 JSON 类型,本文通过实例代码给大家详细讲解,感兴趣的朋友一起看看吧
    2023-11-11

最新评论