SELECT * from movies
INNER JOIN movie_genres ON movies.id_movie=movie_genres.fk_id_movie
INNER JOIN genres ON movie_genres.fk_id_genre=genres.id_genre
WHERE genre_name IN ('action','crime');
movie_genres 只有 2 列(FK): - fk_id_movie - fk_id_genre
[电影]--------[电影类型]--------[类型]
这将返回一个OR结果:类型为“ Action ”或“犯罪”的任何电影;
是否可以用 AND 结果来写这个。仅返回同时具有 2 种类型的电影?
最佳答案
是的。一个好的方法是使用聚合和一个 having
子句:
SELECT *
from movies INNER JOIN
movie_genres
ON movies.id=id_movie
GROUP BY movies.id
HAVING sum(genre = '1') > 0 and
sum(genre = '2') > 0 and
sum(genre = '3') > 0;
关于MySQL:哪里...在(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20828174/