• mysql GROUP_CONCAT使用


    完整的语法如下:

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

    基本查询

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    mysql> select * from aa;
    +------+------+
    | id| name |
    +------+------+
    |1 | 10|
    |1 | 20|
    |1 | 20|
    |2 | 20|
    |3 | 200 |
    |3 | 500 |
    +------+------+
    6 rows in set (0.00 sec)

    以id分组,把name字段的值打印在一行,逗号分隔(默认)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    mysql> select id,group_concat(name) from aa group by id;
    +------+--------------------+
    | id| group_concat(name) |
    +------+--------------------+
    |1 | 10,20,20|
    |2 | 20 |
    |3 | 200,500|
    +------+--------------------+
    3 rows in set (0.00 sec)

    以id分组,把name字段的值打印在一行,分号分隔

    1
    2
    3
    4
    5
    6
    7
    8
    9
    mysql> select id,group_concat(name separator ';') from aa group by id;
    +------+----------------------------------+
    | id| group_concat(name separator ';') |
    +------+----------------------------------+
    |1 | 10;20;20 |
    |2 | 20|
    |3 | 200;500 |
    +------+----------------------------------+
    3 rows in set (0.00 sec)

    以id分组,把去冗余的name(也就是重复数据)字段的值打印在一行,逗号分隔

    1
    2
    3
    4
    5
    6
    7
    8
    9
    mysql> select id,group_concat(distinct name) from aa group by id;
    +------+-----------------------------+
    | id| group_concat(distinct name) |
    +------+-----------------------------+
    |1 | 10,20|
    |2 | 20 |
    |3 | 200,500 |
    +------+-----------------------------+
    3 rows in set (0.00 sec)

    以id分组,把name字段的值打印在一行,逗号分隔,以name排倒序

    1
    2
    3
    4
    5
    6
    7
    8
    9
    mysql> select id,group_concat(name order by name desc) from aa group by id;
    +------+---------------------------------------+
    | id| group_concat(name order by name desc) |
    +------+---------------------------------------+
    |1 | 20,20,10 |
    |2 | 20|
    |3 | 500,200|
    +------+---------------------------------------+
    3 rows in set (0.00 sec)

    使用group_concat_max_len系统变量,你可以设置允许的最大长度。 程序中进行这项操作的语法如下,其中 val 是一个无符号整数:

    1
    SET [SESSION | GLOBAL] group_concat_max_len = val;

    若已经设置了最大长度, 则结果被截至这个最大长度。

    将环境变量group_concat_max_len 增大。默认是1024.我就设置了session级的环境变量将其变为2048(不够用再加大)。解决该问题

  • 相关阅读:
    SQLPLUS使用及Oracle表空间设定自动扩展
    3.21 Go之多核并行化
    3.21 Go之锁(二)
    3.12 Go之通道关闭后继续使用
    3.12 Go之并发打印(借助通道实现)
    3.11 Go之RPC(模拟远程调用过程)
    3.23 Go之反射
    3.22 Go之等待组
    3.21 Go之锁(一)
    3.22 Go之CSP:通信顺序进程
  • 原文地址:https://www.cnblogs.com/lemperor/p/15406686.html
Copyright © 2020-2023  润新知