我有一个使用三个表的模式:
- 演员列表和 INTERVAL actor_id
- 电影标题列表和 INTERVAL movid_id
对两者进行分类的表,如下所示:
CREATE TABLE actors_movies ( actor_movie_id INT AUTO_INCREMENT, actor_id INT, movie_id INT, PRIMARY KEY (actor_movie_id), KEY actor_id (actor_id), KEY movie_id (movie_id) );
我想写一个查询来显示一个演员没有参加过的所有电影。我遇到的问题是一部电影可以有多个演员。因此,即使您根据 id 或名称排除演员,该电影仍可能被拉入结果中。
我试图编写以下查询,但它有点多余和手动。如何利用子查询来抑制演员参与的电影并考虑多个演员的问题?
SELECT movie_name
FROM movies as m
JOIN actors_movies as am on m.movie_id = am.movie_id
JOIN actors as a on a.actor_id = am.actor_id
WHERE actor_name <> 'actor_name'
AND am.movie_id NOT IN(4,14);
任何帮助将不胜感激!