Mysql将多列数据合并成一行 函数 GROUP_CONCAT 的用法

例:

原始数据:一个 channel_id 对应多个 category_id
在这里插入图片描述

处理后数据:每个 channe_id 对应的 category_id
在这里插入图片描述

对应处理数据的sql:

SELECT channel_id,GROUP_CONCAT(category_id) 
FROM test 
GROUP BY channel_id

函数Group_concat的用法:

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

1.去重:
如果对应的category_id有重复的,还可以使用去重,当然这种频道对应类目的一般不会重复;比如一个用户id,有多个科目分数对应,那就可能存在分数一样的情况:
在这里插入图片描述
去重的sql:

SELECT id,GROUP_CONCAT(DISTINCT score) FROM test GROUP BY id

去重后:
在这里插入图片描述


2.排序:

排序前:
在这里插入图片描述

排序后:将 channel_id 对应的 category_id 按照逆序排列
在这里插入图片描述
对应的排序sql:

SELECT channel_id,GROUP_CONCAT(category_id order by category_id desc) 
FROM test
GROUP BY channel_id

3.设置分隔符:

原本默认的是用逗号分隔开的,也可以自定义分隔符:

如:使用分号隔开:
在这里插入图片描述
对应的sql:

SELECT channel_id,GROUP_CONCAT(category_id SEPARATOR ';') 
FROM kd_test
GROUP BY channel_id
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐