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/

10-13 04:45