【问题标题】:mysql: get all rows into 1 columnmysql:将所有行放入1列
【发布时间】:2011-02-25 06:27:42
【问题描述】:
  • 帖子(id_post,标题)
  • 标签(id_tag,名称)
  • post_tag(id_post_tag、id_post、id_tag)

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

有没有办法在 ONE 行中返回类似的内容?

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

谢谢

【问题讨论】:

    标签: sql mysql string-concatenation


    【解决方案1】:

    用途:

      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
    

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

    文档:

    【讨论】:

    • 效果很好!还有一个疑问......我如何限制标签的数量,例如:3 - 我尝试使用 LIMIT 方法但它不起作用。
    • @andufo:您必须使用变量来提供分析功能,因为它在 MySQL 中本身并不存在。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 2018-05-02
    • 2012-07-01
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多