当前位置: 首页 > 知识库问答 >
问题:

MySQL将列聚合为不同值集

鲁烨熠
2023-03-14

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

让我们考虑以下模式

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个答案

汪茂
2023-03-14

您可以按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 

请参阅演示。

 类似资料:
  • 第一个名为的文档包含以下文档(不包括): 第二个集合名为,具有以下文档: 上的 预期的结果是: 如何使用聚合查询来实现这一点?

  • 问题内容: 我正在尝试找到一种将两列合并为一个的方法,但是要保持列中的值“ 0”而不是单词的组合。 这些是我和其他人尝试过的: 有人可以让我知道我做错了吗? 问题答案: 我的猜测是,您使用的是MySQL,其中的运算符会进行加法运算,并将值自动转换为数字。如果值不是以数字开头,则转换后的值为。 所以试试这个: 两种添加空间的方法:

  • 问题内容: 这个问题已经在这里有了答案 : 合并具有不同列数的两个表 (4个答案) 6年前关闭。 我有一个选择查询,用于选择附加了缩略图文件的文件,我还需要获取未附加缩略图的文件。 我当前的SQL查询是 我还需要 我通常只会做一个 但是问题是第二个具有不同的列集(减去文件。*部分) 我一生无法弄清楚该如何做。 问题答案: 如果您具有不同的字段,这些字段也具有不同的含义,则不能也不应将它们返回到相同

  • 问题内容: 我有一个带有收集类型的表。我要从表和某些列开始。我希望每个组的结果都包含一个集合,该集合包含该组中所有单个集合的独特联合。 例如, 我在寻找什么答案 我只在寻找可以插入上方“神奇的语法在这里”占位符的表达式。我知道我可以通过加入主表或以其他方式重组查询(或当然使用PL / SQL)来完成聚合。但是,我现在暂时避免这样的解决方案。 问题答案: 从我的回答改编成另一个问题。 Oracle安

  • 问题内容: 假设我有下表: 从上表中,我要: 结果应为: 如果定义的ID中的任何行对特定列都为true,则我们假设结果为true。 问题答案: 使用聚合函数。 手册: 如果至少一个输入值是true,则为true,否则为false

  • SQL在sql_mode=ONLY_FULL_GROUP_BY中遇到了一些问题,如何重写这个SQL?