MySQL - 分组连接字段函数GROUP_CONCAT的使用

本文介绍了MySQL中的GROUP_CONCAT函数,包括其语法和多种使用方式,如以分组字段连接值并用逗号或竖线分隔,以及去重和排序等。同时提到了可通过group_concat_max_len系统变量调整连接结果的最大长度。

一、语法

group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])
    该函数返回来自同一个分组的指定字段的非NULL值的连接起来字符串。


二、用法

    准备表和数据如下:

      

    1、以cid分组,把同组的sname字段值打印在一行,逗号分隔(默认)

SELECT cid, GROUP_CONCAT(sname) from  student group by cid;

      

        注意,cid为1002中,sname为NULL的值没有参与连接


    2、以cid分组,把同组的sname字段的值打印在一行,竖线分隔

SELECT cid, GROUP_CONCAT(sname separator '|') from  student group by cid;

      


    3、以cid分组,把同组的sname字段值去重后打印在一行

SELECT cid, GROUP_CONCAT(distinct sname) from  student group by cid;

      

    4、以cid分组,把同组的sname字段值排序后打印在一行

SELECT cid, GROUP_CONCAT(sname order by sname desc) from  student group by cid;
      

三、补充

    可以通过group_concat_max_len系统变量设置允许的最大长度

语法:SET [SESSION | GLOBAL] group_concat_max_len = unsigned_integer;
例如:SET GLOBAL group_concat_max_len = 1024;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值