mysql【group_concat】数据库将查询的多条结果的某些字段合并为一个字段处理
在使用mysql数据库做一些业务时,比如将一条记录对应的多条详情数据记录归并为该条记录的某一个字段时,可以使用mysql的concat_ws和group_concat方法来进行处理:
使用concat_ws方法将详情数据的一条记录的多个字段先拼接合并为一个字段,然后使用group_concat将多条详情数据合并处理的字段拼接合并为一个字段。
语法:
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col ...]]
[SEPARATOR str_val])
在 MySQL 中,通过使用 DISTINCT 可以排除重复值,通过使用 ORDER BY 子句对结果中的值进行排序。
SEPARATOR 是一个字符串值,它被用于插入到结果值中。缺省为一个逗号 (","),可以通过指定 SEPARATOR "" 完全地移除这个分隔符。
可以通过变量 group_concat_max_len 设置一个最大的长度。在运行时执行的句法如下: SET [SESSION | GLOBAL] group_concat_max_len = unsigned_integer;
如果最大长度被设置,结果值被剪切到这个最大长度。如果分组的字符过长,可以对系统参数进行设置:SET @@global.group_concat_max_len=40000
示例如下:
SELECT GROUP_CONCAT(tmp.fileInfo) AS fileInfos FROM ( SELECT CONCAT_WS( '-', file_name, file_url ) AS fileInfo FROM clientlogdetail WHERE serial_no = 11 ) tmp;
以上sql是使用CONCAT_WS方法将clientlogdetail表中的file_name和file_url字段通过分割符-拼接合并为一个字段,之后使用GROUP_CONCAT方法将前面拼接的结果继续拼接合并为一个字段。效果如下:
详情记录字段值:
详情记录字段合并结果:
所有详情记录结果合并结果:
group_concat还可以设置拼接前缀和后缀符,如group_concat("", 字段名,"'")是以单引号将结果组合进行拼接。
相关文章
- mysql数据库binary log中的事件到底是什么?
- WebAPI调用笔记 ASP.NET CORE 学习之自定义异常处理 MySQL数据库查询优化建议 .NET操作XML文件之泛型集合的序列化与反序列化 Asp.Net Core 轻松学-多线程之Task快速上手 Asp.Net Core 轻松学-多线程之Task(补充)
- MySQL更新锁表超时 Lock wait timeout exceeded
- PHP+Redis+MySQL商品秒杀与超卖
- 【JAVA】在java类中连接和读取mysql数据库的实例(控制台显示)
- 使用node js 操作 Mysql 数据库
- MySQL: 范围查询优化
- Windows系统下安装MySQL详细教程(命令安装法)
- 面试题:在日常工作中怎么做MySQL优化的?
- mysql空格问题引起查询问题
- 面试题:MySQL的原子性和持久性如何保证?
- MySQL数据库介绍——包含索引、视图、事务、引擎
- 迅美VPS安装和配置MySQL数据库教程
- 《PHP和MySQL Web开发从新手到高手(第5版)》一一2.4 创建数据库
- 基于Python+MySQL实现(Web)学生成绩管理系统【100010288】
- Hive(三)Hive元数据信息对应MySQL数据库表
- Mysql运行状态查询命令及调优详解
- MySQL安全审计-等保2.0
- python操作mysql数据库系列-操作MySql数据库(二)
- MySQL数据库设置远程访问
- Mysql数据库常用表结构操作语句
- 《mysql实战45讲》
- mysql基础综述(四)
- Mysql 插入 path 插入不进去值
- MySQL数据库启停
- MySQL数据库的下载、安装、环境配置及使用Navicat连接MySQL数据库实战教程
- Python、Django、Mysql详细搭建开发,model操作数据库以及执行原生SQL
- 使用egg.js和egg-sequelize连接mysql
- MySQL 教程(基础篇)第02话:MySQL 8.0 下载、安装和配置(Linux 版)——使用 Yum Repository 方式