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


    来源:https://www.cnblogs.com/zjoe-life/p/10523071.html

    我之前也用过,但是当时并不是很懂,请参考:https://www.cnblogs.com/laijinquan/protected/p/10250104.html

    理解:如果没有指定分组的话,则将要合拼的字段全部合成一条,总就一条,就合并作用而已。

    一、描述:

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

        

        想要达到的效果:

        

        实现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'; 

    三、使用实例:

      

    复制代码
    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 ;
    复制代码

      

  • 相关阅读:
    openstack nova 基础知识——Quota(配额管理)
    02python注释
    01使用Pycharm编写第一个python程序
    35Angular实现一个todoList
    34Angular实现搜索缓存数据功能
    33Angular实现人员登记系统(表单元件的双向数据绑定)
    32练习
    31封装一个网络请求的服务
    30服务(练习)
    29服务
  • 原文地址:https://www.cnblogs.com/laijinquan/p/11936174.html
Copyright © 2020-2023  润新知