MYSQL如何用GROUP_CONCAT将同user_id数据按指定格式合并为单行
MySQL 按user_id合并行格式转换解决方案
错误原因
你之前的写法是先分别拼接所有NAME、TYPE、RATING字段值,自然会出现同类型字段全部堆叠的问题,不符合逐行格式化再合并的需求。
正确实现代码
核心逻辑:先为每一条原始记录生成符合要求的格式字符串,再按user_id分组,将同一分组的所有格式化字符串拼接为单行。
-- 临时调大GROUP_CONCAT长度限制,避免数据量大时被截断(按需调整数值,单位字节) SET SESSION group_concat_max_len = 1024000; SELECT user_id, GROUP_CONCAT( CONCAT('NAME: ', NAME, ', TYPE: ', TYPE, ', RATING: ', RATING) SEPARATOR ',\n' ) AS merged_result FROM 你的实际表名 GROUP BY user_id;
如果不需要输出user_id字段,直接删除SELECT列表中的user_id即可。
效果说明
拼接后的merged_result字段,同user_id的所有记录会按你要求的格式逐行拼接,和你给出的目标效果完全一致,适配数据导入场景的格式要求。
内容的提问来源于stack exchange,提问作者chewie
相关产品推荐
相关产品推荐

