MySQL聚合列作为一组不同的值

Posted

技术标签:

【中文标题】MySQL聚合列作为一组不同的值【英文标题】:MySQL aggregate column as set of distinct values 【发布时间】:2021-07-12 05:34:51 【问题描述】:

我想将一列聚合为一组值。

让我们考虑以下架构

A, B, C
'a', 'b', 'c'
'a', 'b', 'd'
'a', 'c', 'd'
'b', 'a', 'c'
'b', 'd', 'a'

我需要这样的结果

A, B, C
'a', ['b', 'c'], ['c', 'd']
'b', ['a', 'd'], ['c', 'a']

我尝试搜索集合聚合函数,但找不到任何有用的东西。

【问题讨论】:

【参考方案1】:

您可以group by A 和使用GROUP_CONCAT() 收集不同的Bs 和Cs:

SELECT A,
       CONCAT('[', GROUP_CONCAT(DISTINCT B SEPARATOR ', '), ']') B,
       CONCAT('[', GROUP_CONCAT(DISTINCT C SEPARATOR ', '), ']') C
FROM tablename
GROUP BY A 

请参阅demo。

【讨论】:

以上是关于MySQL聚合列作为一组不同的值的主要内容,如果未能解决你的问题,请参考以下文章