mysql GROUP_CONCAT重复

Mat*_*att 42 mysql sql group-concat

我从像这样的farmTOanimal表中进行连接.有一个类似的farmTotool表

id | FarmID  | animal
 1 |    1    | cat
 2 |    1    | dog
Run Code Online (Sandbox Code Playgroud)

当我在视图中加入我的表时,我得到一个看起来像这样的结果

FarmID | animal | tool
   1   |  cat   | shovel
   1   |  dog   | shovel
   1   |  cat   | bucket
   1   |  dog   | bucket
Run Code Online (Sandbox Code Playgroud)

现在,我做GROUP BY FarmID,GROUP_CONCAT(动物)和GROUP_CONCAT(工具),我得到

FarmID |     animals     |         tools
  1    | cat,dog,cat,dog | shovel,shovel,bucket,bucket
Run Code Online (Sandbox Code Playgroud)

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

FarmID | animals |    tools
  1    | cat,dog | shovel,bucket
Run Code Online (Sandbox Code Playgroud)

gra*_*rks 131

你需要使用DISTINCT选项:

GROUP_CONCAT(DISTINCT animal)
Run Code Online (Sandbox Code Playgroud)

  • DISTINCT将相同的行内容显示为一个.对于前者 row1 ='abc',row2 ='def',row3 ='abc'.GROUP_CONCAT(DISTINCT行)将产生abc,def,它应该是abc,def,abc.除了使用DISTINCT之外,解决方案是什么? (9认同)