如何编写MySQL查询实现三张表数据的GROUP_CONCAT合并?
MySQL多表关联分组合并流派查询方案
核心查询语句
SELECT s.Movie AS 电影名称, GROUP_CONCAT(g.Genre_Name SEPARATOR ', ') AS 合并流派名称 FROM `Show` s JOIN Show_index si ON s.IndexID = si.IndexID JOIN Show_genres g ON si.Genre_ID = g.Genre_ID GROUP BY s.ID, s.Movie;
关键逻辑说明
- 表关联:通过
IndexID关联Show和Show_index表,再通过Genre_ID关联Show_index和Show_genres表,建立三张表的关联关系 - 流派合并:使用
GROUP_CONCAT函数将同一电影对应的多个流派名称用逗号分隔合并成单个字符串,可通过修改SEPARATOR参数调整分隔符 - 分组规则:按
Show表的ID和Movie字段分组,确保每部电影只返回一行结果(避免因多流派产生重复行)
可选优化
如果存在同一电影对应重复流派的情况,可在GROUP_CONCAT中添加DISTINCT去重:
SELECT s.Movie AS 电影名称, GROUP_CONCAT(DISTINCT g.Genre_Name SEPARATOR ', ') AS 合并流派名称 FROM `Show` s JOIN Show_index si ON s.IndexID = si.IndexID JOIN Show_genres g ON si.Genre_ID = g.Genre_ID GROUP BY s.ID, s.Movie;
内容的提问来源于stack exchange,提问作者QWizQ
相关产品推荐
相关产品推荐

