代码之家  ›  专栏  ›  技术社区  ›  Andres SK

MySQL:将所有行都放到1列中

  •  1
  • Andres SK  · 技术社区  · 15 年前
    • 职务(身份证、职务)
    • 标签(id_tag,name)
    • 发布标签(id_post_tag,id_post,id_tag)

    假设ID_Post 3有4个链接标签1、2、3、4(足球、篮球、网球和高尔夫)。

    是否有一种方法可以在一行中返回类似的内容?

    • 科尔1 IdPoST=3
    • 科尔2 tags=足球篮网球高尔夫

    谢谢

    1 回复  |  直到 15 年前
        1
  •  2
  •   OMG Ponies    15 年前

    用途:

      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
    

    请注意,默认分隔符是逗号,因此如果不想在标记名之间定义一个空格,就必须定义一个空格。

    文档: