【问题标题】:mysql select distinct rows into a comma delimited list columnmysql将不同的行选择到逗号分隔的列表列中
【发布时间】:2011-12-01 23:07:09
【问题描述】:

我目前有一些带回标签的 sql。他们应该有不同的ID,但他们没有......所以我目前的数据是这样的:

Microsoft | GGG | 1 | 167
Microsoft | GGG | 1 | 2
Microsoft | GGG | 1 | 1

我想做的是只返回一行,最后一列连接到一个分隔列表中,例如:

Microsoft | GGG | 1 | 167, 2, 1

我为此使用了 mySQL 5。

【问题讨论】:

  • 我不知道你在问你的旗帜。如果您问错了问题,请评估提供的答案,看看它是否回答了您在此处提出的问题,然后通过选择正确答案结束问题。然后你可以去问你的真正的问题。

标签: mysql sql


【解决方案1】:

为此使用GROUP_CONCAT()GROUP BY 覆盖其他三列:

SELECT 
  name,   -- Microsoft
  other,  -- GGG
  other2, -- 1
  GROUP_CONCAT(id) AS ids
FROM tbl
GROUP BY name, other, other2

【讨论】:

  • 如果ids 是一个大集合,不要忘记为SET SESSION group_concat_max_len = 1000000; 设置一个足够大的值
  • 这没有给出不同的值。
  • @geoidesic 不确定你的意思。该问题没有要求不同的值,但是如果您阅读the GROUP_CONCAT() docs,您会发现它确实支持DISTINCT 关键字来重复删除其字符串返回值。
猜你喜欢
  • 2021-01-19
  • 1970-01-01
  • 1970-01-01
  • 2012-06-29
  • 2013-07-03
  • 1970-01-01
  • 2012-11-03
  • 2023-04-06
  • 1970-01-01
相关资源
最近更新 更多