0
点赞
收藏
分享

微信扫一扫

MYSQL 单表一对多查询,将多条记录合并成一条记录

ZMXQQ233 2023-05-26 阅读 112


MYSQL 单表一对多查询,将多条记录合并成一条记录
一、描述:

在MySQL 5.6环境下,应工作需求:将一个表中多条某个相同字段的其他字段合并(不太会表达,有点绕,直接上图)

MYSQL 单表一对多查询,将多条记录合并成一条记录_字符串

想要达到的效果:

MYSQL 单表一对多查询,将多条记录合并成一条记录_字段_02

实现SQL语句:

复制代码

1 SELECT
 2 a.books,
 3 GROUP_CONCAT(a.name SEPARATOR ‘||’) AS NAMES,
 4 GROUP_CONCAT(a.code SEPARATOR ‘||’) AS codes
 5 FROM
 6 temp_info a
 7 GROUP BY a.books ;


复制代码
二、关键词 GROUP_CONCAT():(返回一个字符串结果,该结果由分组中的值连接组合而成。)

语法结构:

1 GROUP_CONCAT(
 2 [ DISTINCT ] expr [,
 3 expr…] [
 4 ORDER BY { unsigned_integer | col_name | formula } [ ASC | DESC ] [,
 5 col…] ] [ SEPARATOR str_val ]
 6 )


  要点:

1、通过使用 DISTINCT 可以排除重复值。

2、如果希望对结果中的值进行排序,可以使用 ORDER BY 子句。

3、SEPARATOR: 一个字符串值,它被用于插入到结果值中。缺省为一个逗号 (","),可以通过指定 SEPARATOR “” 完全地移除这个分隔符。

4、group_concat_max_len:可以设置一个最大的长度。

语法: 1 SET [SESSION | GLOBAL] group_concat_max_len = unsigned_integer;

5、如果最大长度被设置,结果值未到达到该长度,则结果值会被增加到这个长度。

6、如果分组的字符过长,可以对系统参数进行设置:SET @@global.group_concat_max_len=40000;

注意:

group_concat_max_len在MySQL的配置文件中是有默认值的!最大值为1024,如果要想该函数按需求设置长度,使用:

1 SET GLOBAL group_concat_max_len=-1;

查看group_concat_max_len最大长度:

1 show variables like ‘group_concat_max_len’;

三、使用实例:

MYSQL 单表一对多查询,将多条记录合并成一条记录_字段_03

复制代码

1 SELECT
 2 a.books,
 3 GROUP_CONCAT(DISTINCT a.name SEPARATOR ‘||’) AS NAMES, – 使用 distinct 去除重复数据、
 4 GROUP_CONCAT(a.code ORDER BY a.code DESC SEPARATOR ‘||’) AS codes – 使用order by 对数据进行排序
 5 FROM
 6 temp_info a
 7 GROUP BY a.books ;


复制代码


举报

相关推荐

0 条评论