【问题标题】:MySQL aggregate column as set of distinct valuesMySQL聚合列作为一组不同的值
【发布时间】: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']

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

【问题讨论】:

    标签: mysql group-by set aggregate-functions


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2020-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-30
      • 2015-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多