【问题标题】:mysql GROUP_CONCAT duplicatesmysql GROUP_CONCAT 重复
【发布时间】:2011-06-01 11:47:03
【问题描述】:

我从这样的农场动物表加入。有一个类似的farmTotool表

id | FarmID  | animal
 1 |    1    | cat
 2 |    1    | dog

当我在视图中加入我的表时,我得到的结果如下所示

FarmID | animal | tool
   1   |  cat   | shovel
   1   |  dog   | shovel
   1   |  cat   | bucket
   1   |  dog   | bucket

现在,我按 FarmID 进行 GROUP_CONCAT(动物)和 GROUP_CONCAT(工具),我得到了

FarmID |     animals     |         tools
  1    | cat,dog,cat,dog | shovel,shovel,bucket,bucket

但是,我真正想要的是看起来像这样的结果。我该怎么做?

FarmID | animals |    tools
  1    | cat,dog | shovel,bucket

【问题讨论】:

  • GROUP_CONCAT(UNIQUE(animal)) 不工作?

标签: sql mysql group-concat


【解决方案1】:

您需要使用DISTINCT 选项:

GROUP_CONCAT(DISTINCT animal)

【讨论】:

  • DISTINCT 将相同的行内容显示为一个。例如。 row1='abc',row2='def',row3='abc'。 GROUP_CONCAT(DISTINCT row) 将导致 abc,def 应该是 abc,def,abc。除了使用 DISTINCT 还有什么解决办法?
  • 啊,谢谢。我尝试了 DISTINCT,但没有将它放在 GROUP_CONCAT 中,不确定我期望它做什么。谢谢。
  • 我同意@JamVille,此解决方案仅适用于行列内容确实不同的情况。如果内容不明确,我们怎么能只选择一次值呢?
  • @JamVille 如果您使用没有 DISTINCT 关键字的 GROUP_CONCAT() 将执行您在示例中要求的操作,除非我遗漏了什么?
猜你喜欢
  • 2012-07-14
  • 2013-08-03
  • 2012-09-24
  • 1970-01-01
  • 1970-01-01
  • 2017-12-18
  • 1970-01-01
  • 2015-07-14
  • 2015-07-10
相关资源
最近更新 更多