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 err错误提示You need to use --log-bin to make --binlog-format work.

    mysql err错误提示You need to use --log-

    今天在检查mysql服务器错误日志的时候发现You need to use --log-bin to make --binlog-format work,通过如下方法解决了特分享一下
    2023-06-06
  • 通过缓存+SQL修改优雅地优化慢查询

    通过缓存+SQL修改优雅地优化慢查询

    本文通过介绍缓存的基本原理和SQL语句的优化手段,以及实际案例的分析,为读者提供了一种简单而有效的优化思路。读者可以通过本文了解到如何在不修改程序代码的情况下,通过巧妙地运用缓存和SQL优化技巧,提高程序的性能和响应速度。
    2023-04-04
  • MySQL case when使用方法实例解析

    MySQL case when使用方法实例解析

    这篇文章主要介绍了MySQL case when使用方法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • mysql请求阻塞问题解析

    mysql请求阻塞问题解析

    这篇文章主要介绍了mysql请求阻塞问题解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-10-10
  • Mysql索引会失效的几种情况分析

    Mysql索引会失效的几种情况分析

    在做项目的过程中,难免会遇到明明给mysql建立了索引,可是查询还是很缓慢的情况出现,下面我们来具体分析下这种情况出现的原因及解决方法
    2014-06-06
  • Windows7下如何在命令行使用MySQL

    Windows7下如何在命令行使用MySQL

    这篇文章主要介绍了Windows7下如何在命令行使用MySQL的相关资料,需要的朋友可以参考下
    2015-12-12
  • 千万级记录的Discuz论坛导致MySQL CPU 100%的优化笔记

    千万级记录的Discuz论坛导致MySQL CPU 100%的优化笔记

    谈到自己在解决一个拥有 60 万条记录的 MySQL 数据库访问时,导致 MySQL CPU 占用 100% 的经过。在解决问题完成优化(optimize)之后,我发现 Discuz 论坛也存在这个问题,当时稍微提了一下
    2010-12-12
  • mysql中使用shell语句实现xtrabackup自动物理备份增量备份

    mysql中使用shell语句实现xtrabackup自动物理备份增量备份

    这篇文章主要为大家介绍了mysql数据库使用shell实现xtrabackup自动物理备份增量备份脚本,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • master and slave have equal MySQL server UUIDs 解决方法

    master and slave have equal MySQL server UUIDs 解决方法

    使用rsync配置了大量mysql,省去了大量编译和配置的时间,随逐个修改master和slave服务器的my.cnf,后,发现数据不能同步
    2013-07-07
  • Linux下MySQL 5.6.27 安装教程

    Linux下MySQL 5.6.27 安装教程

    这篇文章主要为大家详细介绍了Linux下MySQL 5.6.27 安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07

最新评论