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表的增删改查(基础)
Apr 05 MySQL
新手必备之MySQL msi版本下载安装图文详细教程
May 21 MySQL
QT连接MYSQL数据库的详细步骤
Jul 07 MySQL
MySQL千万级数据表的优化实战记录
Aug 04 MySQL
MySQL修炼之联结与集合浅析
Oct 05 MySQL
千万级用户系统SQL调优实战分享
Mar 03 MySQL
一条慢SQL语句引发的改造之路
Mar 16 MySQL
CentOS MySql8 远程连接实战
Apr 19 MySQL
MySQL索引 高效获取数据的数据结构
May 02 MySQL
MySQL示例讲解数据库约束以及表的设计
Jun 16 MySQL
Mysql数据库group by原理详解
Jul 07 MySQL
MySQL表字段数量限制及行大小限制详情
Jul 23 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+redis实现添加处理投票的方法
2015/11/14 PHP
带你了解PHP7 性能翻倍的关键
2015/11/19 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
PHP实现简单注册登录系统
2020/12/28 PHP
JavaScript 设计模式学习 Singleton
2009/07/27 Javascript
javascript常用的正则表达式实例
2014/05/15 Javascript
举例详解JavaScript中Promise的使用
2015/06/24 Javascript
JS模仿编辑器实时改变文本框宽度和高度大小的方法
2015/08/17 Javascript
JavaScript中闭包的写法和作用详解
2016/06/29 Javascript
jQuery.ajax 跨域请求webapi设置headers的解决方案
2016/08/08 Javascript
jQuery插件zTree实现清空选中第一个节点所有子节点的方法
2017/03/08 Javascript
React服务端渲染(总结)
2017/07/01 Javascript
vue-cli如何引入bootstrap工具的方法
2017/10/19 Javascript
解决vue 更改计算属性后select选中值不更改的问题
2018/03/02 Javascript
使用Vue-cli 3.0搭建Vue项目的方法
2018/06/07 Javascript
node.js的Express服务器基本使用教程
2019/01/09 Javascript
koa+jwt实现token验证与刷新功能
2019/05/30 Javascript
基于JS正则表达式实现模板数据动态渲染(实现思路详解)
2020/03/07 Javascript
ant design vue导航菜单与路由配置操作
2020/10/28 Javascript
Python 条件判断的缩写方法
2008/09/06 Python
django模型中的字段和model名显示为中文小技巧分享
2014/11/18 Python
Python减少循环层次和缩进的技巧分析
2016/03/15 Python
浅谈python新手中常见的疑惑及解答
2016/06/14 Python
解决pandas中读取中文名称的csv文件报错的问题
2018/07/04 Python
Python常见数字运算操作实例小结
2019/03/22 Python
利用Python如何实时检测自身内存占用
2020/05/09 Python
详细分析Python collections工具库
2020/07/16 Python
Python趣味实例,实现一个简单的抽奖刮刮卡
2020/07/18 Python
python 实现一个图形界面的汇率计算器
2020/11/09 Python
用CSS3的box-reflect来制作倒影效果
2016/11/15 HTML / CSS
什么是数据抽象
2016/11/26 面试题
高中英语教学反思
2014/02/04 职场文书
新年抽奖获奖感言
2014/03/02 职场文书
财务管理专业毕业生求职信
2014/06/02 职场文书
大学生就业求职信
2014/06/12 职场文书
公司活动总结怎么写
2014/06/25 职场文书