对于MySQL来说,我是一个新手。我很难找到这个,但我敢打赌解决方案很简单。我有以下表格:
影
con_genres(其他2之间的连接表)
流派
我尝试了不同的查询,但我不断获得这些结果
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个查询获得此功能的最佳方法是什么?
答案 0 :(得分:2)
没有运行它,但这应该有效:
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
来选择全部每个电影的流派名称用逗号分隔的字符串。