GROUP_CONCAT 与两个表的 LEFT OUTER JOIN

Posted

技术标签:

【中文标题】GROUP_CONCAT 与两个表的 LEFT OUTER JOIN【英文标题】:GROUP_CONCAT with LEFT OUTER JOIN of two tables 【发布时间】:2014-07-19 04:39:25 【问题描述】:
SELECT table1.value, table2.additionalinfo
FROM table1
LEFT OUTER JOIN table2
ON table1.ID=table2.ID

我尝试输出这样的东西

Value   AdditionalInfo
blah    something, somethingelse, more
blah2   NULL
blah3   stuff

但我明白了

Value   AdditionalInfo
blah    something
blah    somethingelse
blah    more
blah2   NULL
blah3   stuff

我尝试使用GROUP_CONCATGROUP_CONCAT(DISTINCT)

SELECT GROUP_CONCAT(table1.value), table2.additionalinfo
FROM table1
left outer JOIN table2
ON table1.ID=table2.ID ORDER BY table1.value

当我添加 GROUP_CONCATORDER BY table1.value 时,它只列出每个值的一个附加信息,但没有任何值,并且不会得到重复的附加信息。我将订单到处移动,但无济于事。

【问题讨论】:

【参考方案1】:

我认为您需要在 AdditionalInfo 列上而不是在 table1.value 上执行 GROUP_CONCAT

SELECT table1.value, 
GROUP_CONCAT(distinct table2.additionalinfo) additionalinfo
FROM table1
left outer JOIN table2 ON table1.ID=table2.ID 
GROUP BY table1.value
ORDER BY table1.value

【讨论】:

以上是关于GROUP_CONCAT 与两个表的 LEFT OUTER JOIN的主要内容,如果未能解决你的问题,请参考以下文章

来自 GROUP_BY 的两个 LEFT JOIN 的 GROUP_CONCAT 的奇怪重复行为

GROUP_CONCAT 与 LEFT JOIN 条件?

21. 合并两个有序链表(C++)

MySQL:带有LEFT JOIN的GROUP_CONCAT

带有 LEFT JOIN 和 IF 语句的有限 GROUP_CONCAT

使用 GROUP_CONCAT 进行 LEFT JOIN 的奇怪结果