You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL使用GROUP_CONCAT合并多列实现每行重复对象关联汇总

对象重复项汇总查询解决方案

表结构说明

Objects表(存储主对象)

`obj`
A1
A1a
A1b
A2

Duplicates表(存储主对象与重复对象的关联关系)

注:primary是SQL保留字,实际测试中使用primaryy替代

`primary`, `secondary`
A1, A1a
A1, A1b

查询需求

编写单条SQL语句,利用GROUP_CONCAT函数返回每个对象及其重复项的汇总结果,每行对应一个对象,输出格式为[obj, primary, 合并后的secondary列],预期结果如下:

A1,   A1,(A1a,A1b)
 A1a,  A1,(A1a,A1b)
 A1b,  A1,(A1a,A1b)
 A2,   NULL

尝试过程与解决

初始查询问题

最初编写的SQL语句:

SELECT `obj`, `primary`, GROUP_CONCAT(`secondary`) 
FROM `Objects`
LEFT JOIN `Duplicates` on (`obj`=`primary` OR `obj`=`secondary`)

执行后仅返回一行,所有secondary字段的内容被无差别拼接:

a1a,a1a,  a1b,a1b,a1c,a1c,a2b,a2b

优化后查询

经建议添加GROUP BY子句,调整后的SQL语句:

SELECT `obj`, `primary`, GROUP_CONCAT(`secondary`) 
FROM `Objects`
LEFT JOIN `Duplicates` on (`obj`=`primary` OR `obj`=`secondary`) 
GROUP BY `obj`

执行后得到结果:

obj primary GROUP_CONCAT(`secondary`)
A1  A1      A1a,A1b
A1a A1      A1a
A1b A1      A1b
A2  NULL    NULL

后续确认该结果符合需求,问题已解决。

内容的提问来源于stack exchange,提问作者toby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 05:35:21