假设我有这些表格和值
table actors
id int 11 primary key auto_increment
name varchar 30
table movies
id int 11 primary key auto_increment
name varchar 30
table actors_movies
actor_id int 11
movie_id int 11
我如何查询数据库以获取他们所在的所有 Actor 和电影?
例如,像这样:
从......(查询)......中选择actors.name,movies.name
输出会是这样的
actors.name movies.name movies.name movies.name
Bob Movie A NULL NULL
Melissa Movie A Movie B NULL
Rick NULL NULL Movie C
最佳答案
逗号分隔:
SELECT actors.name, GROUP_CONCAT(movies.name)
FROM actors_movies
LEFT JOIN actors ON actors.id = actors_movies.actor_id
LEFT JOIN movies ON movies.id = actors_movies.movie_id
GROUP BY actors_movies.actor_id
输出将是这样的:
+-------------+---------------------------+
| name | GROUP_CONCAT(movies.name) |
+-------------+---------------------------+
| Bob | Movie A |
| Melissa | Movie A,Movie B |
| Rick | Movie C |
+-------------+---------------------------+
SQLFiddle:http://sqlfiddle.com/#!9/04c0a2/1
关于mysql - 如何查询可能不存在的多对多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40077578/