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');
电影类型只有两列(FK):
-电影
-fk-id-U类型
[电影]——[电影流派]——[流派]
这将返回一个或结果:任何类型为“动作”或“犯罪”的电影;
是否可以用AND结果来写这个。只返回两种类型的电影?
最佳答案
对。一个好的方法是使用聚合和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 - MySQL:在哪里…IN(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20828174/