mysql:将所有行放入1列

时间:2010-05-28 18:26:20

标签: sql mysql string-concatenation

  • post(id_post,title)
  • 标签(id_tag,名称)
  • post_tag(id_post_tag,id_post,id_tag)

让我们假设id_post 3有4个链接标签1,2,3,4(足球,篮球,网球和高尔夫球)。

有没有办法在一行中返回这样的东西?

  • col 1 id_post = 3
  • col 2 标签=足球篮网球高尔夫

由于

1 个答案:

答案 0 :(得分:2)

使用:

  SELECT p.id_post
         GROUP_CONCAT(DISTINCT t.name SEPARATOR ' ')
    FROM POST p
    JOIN POST_TAG pt ON pt.id_post = p.id_post
    JOIN TAG t ON t.id_tag = pt.id_post_tag
GROUP BY p.id_post

请注意默认分隔符是逗号,因此如果您不希望在标记名称之间使用,则必须定义单个空格。

文档: