MySQL实现用逗号进行拼接、以逗号进行分割


Posted in MySQL onDecember 24, 2022

MySQL用逗号进行拼接、以逗号进行分割

MySQL中,把查询的结果拼接成一个字符串。

group_concat 函数

用法:group_concat (待拼接对象)

输出:用逗号进行拼接后的字符串

例子:

select group_concat(emp_no) as employees from dept_emp;
 
/*
结果:
employees                                                         |
+-------------------------------------------------------------------+
| 10001,10002,10003,10004,10005,10006,10007,10008,10009,10010,10010 |
+-------------------------------------------------------------------+
*/

可以使用MySQL中的字符串拆分函数实现:

substring_index(str,delim,count)

说明:str: 被分割的字符串; delim: 分隔符; count: 分割符出现的次数

例子:

对于字符串 “209755,209756,209757” ,设置delim为 “,”,count为1,就会返回 “209755”;

其它参数不变,count为2,就会返回 “209755,209756”;其它参数不变,count为-1,就会返回 “209757”。

select colnum_name
,(select substring_index(substring_index(bill_ids,',',1),',',-1)) as bill_id1
,(select substring_index(substring_index(bill_ids,',',2),',',-1)) as bill_id2
,(select substring_index(substring_index(bill_ids,',',3),',',-1)) as bill_id3
from table_name;

若不知道要分割的字段究竟有几个值(如可能某些行就1个值,某些有6个),可以考虑根据具有最多值的数量来选择使用多少条

(select substring_index(substring_index(bill_ids,’,’,第几个值),’,’,-1))语句,但是会有问题(待解决)

例子:

原表
1
2,3,4
5,6
分割的结果
1 1 1
2 3 4
5 6 6

MySQL多行数据用逗号拼接返回一行

解决方案

先说解决办法,这里使用的是 GROUP_CONCAT 函数,先来实例:

SELECT GROUP_CONCAT( `name` SEPARATOR ',' ) FROM uim_user 

这样返回的多行数据会合并成一行,并且用逗号分割返回.

GROUP_CONCAT简单阐述

使用语法:

group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])

一般与group by 分组一起使用,如果不分组默认返回一行

而分组后会把相同分组类型的数据返回一行,并且可使用分割符号分割,去重,排序等操作

简单实例:

这里是按照部门分组,这样同一个部门的人会返回一行并且用逗号分割

SELECT group_concat( distinct(name) SEPARATOR ',' ) name FROM uim_user group by dept_id

ps:开发中会有很多种需要合并结果集的情况,比如要查询小明这个同学所有科目分数返回一行,这样使用来达到返回数据的要求。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

MySQL 相关文章推荐
MySQL Innodb关键特性之插入缓冲(insert buffer)
Apr 08 MySQL
MySQL获取所有分类的前N条记录
May 07 MySQL
MySQL 视图(View)原理解析
May 19 MySQL
MySQL8.0.18配置多主一从
Jun 21 MySQL
MySQL中几种插入和批量语句实例详解
Sep 14 MySQL
MySQL 用 limit 为什么会影响性能
Sep 15 MySQL
mysql5.7的安装及Navicate长久免费使用的实现过程
Nov 17 MySQL
Arthas排查Kubernetes中应用频繁挂掉重启异常
Feb 28 MySQL
MySQL 分区表中分区键为什么必须是主键的一部分
Mar 17 MySQL
MySQL学习必备条件查询数据
Mar 25 MySQL
MySQL表锁、行锁、排它锁及共享锁的使用详解
Apr 02 MySQL
进阶篇之linux环境下安装MySQL数据库
Apr 09 MySQL
MySQL数据管理操作示例讲解
Dec 24 #MySQL
MySQL深分页问题解决思路
Dec 24 #MySQL
DQL数据查询语句使用示例
Dec 24 #MySQL
mysql数据库如何转移到oracle
Dec 24 #MySQL
mysql序号rownum行号实现方式
Dec 24 #MySQL
Mysql的Table doesn't exist问题及解决
Dec 24 #MySQL
Mysql如何查看是否使用到索引
Dec 24 #MySQL
You might like
PHP实现恶意DDOS攻击避免带宽占用问题方法
2015/05/27 PHP
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
详解PHP文件的自动加载(autoloading)
2018/02/04 PHP
jQuery toggle()设置CSS样式
2009/11/05 Javascript
30个最佳jQuery Lightbox效果插件分享
2011/04/11 Javascript
JS常用正则表达式总结
2013/11/12 Javascript
JQuery实现当鼠标停留在某区域3秒后自动执行
2014/09/09 Javascript
微信中一些常用的js方法汇总
2015/03/12 Javascript
Javascript基础学习笔记(菜鸟必看篇)
2016/07/22 Javascript
基于BootStrap栅格栏系统完成网站底部版权信息区
2016/12/23 Javascript
Angularjs使用指令做表单校验的方法
2017/03/31 Javascript
jQuery选择器之基本过滤选择器用法实例分析
2019/02/19 jQuery
JS实现秒杀倒计时特效
2020/01/02 Javascript
基于JavaScript实现简单扫雷游戏
2021/01/02 Javascript
[49:42]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第一局
2016/03/04 DOTA
Python下实现的RSA加密/解密及签名/验证功能示例
2017/07/17 Python
python实现堆和索引堆的代码示例
2018/03/19 Python
Python封装原理与实现方法详解
2018/08/28 Python
Python简单I/O操作示例
2019/03/18 Python
python实现AES和RSA加解密的方法
2019/03/28 Python
python常用函数与用法示例
2019/07/02 Python
使用Python实现分别输出每个数组
2019/12/06 Python
Tensorflow训练MNIST手写数字识别模型
2020/02/13 Python
pandas dataframe 中的explode函数用法详解
2020/05/18 Python
selenium携带cookies模拟登陆CSDN的实现
2021/01/19 Python
基于HTML5+Webkit实现树叶飘落动画
2017/12/28 HTML / CSS
Solaris操作系统的线程机制
2012/12/23 面试题
通用求职信范文模板分享
2013/12/27 职场文书
公司应聘求职信
2014/06/21 职场文书
2014年最新大专生职业生涯规划书范文
2014/09/13 职场文书
复兴之路展览观后感
2015/06/02 职场文书
开工典礼致辞
2015/07/29 职场文书
2016廉洁从业学习心得体会
2016/01/19 职场文书
党员干部学法用法心得体会
2016/01/21 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书
Java 超详细讲解十大排序算法面试无忧
2022/04/08 Java/Android