【问题标题】:MySQL combine output dataMySQL合并输出数据
【发布时间】:2011-10-23 15:45:36
【问题描述】:

谈到 MySQL,我还是个新手。我很难找到这个,但我敢打赌解决方案很简单。我有以下表格:

电影

  • movie_id
  • movie_title

con_genres(其他2个之间的连接表)

  • movie_id
  • genre_id

类型

  • genre_id
  • 姓名

我尝试了不同的查询,但一直得到这样的结果

1 | Avatar | Sci-fi
1 | Avatar | Fantasy
2 | Matrix | Sci-fi
2 | Matrix | Fantasy (this one is non existent)

但我想要以下结果

1 | Avatar | Sci-fi, Fantasy
2 | Matrix | Sci-fi

通过 1 次查询获得此信息的最佳方法是什么?

【问题讨论】:

    标签: mysql


    【解决方案1】:

    没有运行它,但这应该可以工作:

    SELECT m.movie_id, MIN(m.movie_title), GROUP_CONCAT(g.name)
    FROM movies m
    LEFT JOIN con_genres c ON c.movie_id = m.movie_id
    LEFT JOIN genres g ON c.genre_id = g.genre_id
    GROUP BY m.movie_id
    

    这里的想法是加入三个表(这将产生类似于您的第一个示例结果),按电影 ID 分组(显然,因为我们只希望每部电影只有一行)并使用 GROUP_CONCAT 选择所有流派名称用逗号分隔的字符串中的每部电影。

    【讨论】:

    • 谢谢乔恩!完美运行。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-17
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    • 1970-01-01
    • 2021-02-19
    相关资源
    最近更新 更多