MySQL使用GROUP_CONCAT()函数按ID分组将多条记录的某个字段以逗号或者指定分隔号隔开成一条记录

MySQL使用GROUP_CONCAT()函数按ID分组将多条记录的某个字段以逗号或者指定分隔号隔开成一条记录

MySQL   2014-08-27   26945阅读   0评论  0收藏  收藏本文
这篇文章的标题看上去不太对。想用一句话概括这篇文章想表达的内容,太难起了。不管了,我们用一个具体的应用场景来解释一下这句话所要真正表达的SQL查询思想,假如我有如下需求,有数据表如下:
id    Name
1          A
1          B
2          C
想用一条SQL语句查询得到如下结果:
id    Names
1     A,B
2     C
以上的需求场景即为本文的主题,有了MySQL的查询数据和需求,那么我们怎么样用一句MYSQL来实现呢,代码如下:
SELECT Id, GROUP_CONCAT(Name SEPARATOR ',') Names FROM some_table GROUP BY id
其中GROUP_CONCAT()函数的分隔符可以自定义,根据你的需求适当选择即可,完整的测试用例:
CREATE TABLE `USERS`(
`Id` INT(4) NOT NULL,
`Name` VARCHAR(30) DEFAULT ''
);
INSERT INTO USERS(`Id`,`Name`) VALUES(1,'A'),(1,'B'),(2,'C');
SELECT Id,GROUP_CONCAT(`Name` SEPARATOR ',') NAMES FROM `USERS` GROUP BY Id;
如果你的字段字节数据较多,则可以使用如下语句来设置group_concat的最大字节数:
SET group_concat_max_len = 20480000;
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值