如何解决这种关系除法查询?

Fos*_*for 2 mysql sql relational-division

我有一个movies带有两个外键(movie_id,genre_id)的table().当然,这两个领域都不是唯一的.

所以我的问题如下,我想选择一部有两种或两种以上特定类型的电影.所以我想做一些事情:

SELECT movie_id 
FROM movies
WHERE genre_id = 1 AND genre_id = 2 AND genre_id = 3
Run Code Online (Sandbox Code Playgroud)

关于如何做的任何想法?谢谢!

Joh*_*Woo 6

这是一个Relational Division问题.

SELECT movie_id 
FROM   movies
WHERE  genre_id IN (1, 2, 3)   -- <<== list of genre_id
GROUP  BY movie_id
HAVING COUNT(*) = 3            -- <<== count of genre_id
Run Code Online (Sandbox Code Playgroud)

如果genre_id并非每个都是唯一的movie_id,DISTINCT则需要一个关键字来过滤唯一的关键字.

SELECT movie_id 
FROM   movies
WHERE  genre_id IN (1, 2, 3)             -- <<== list of genre_id
GROUP  BY movie_id
HAVING COUNT(DISTINCT genre_id) = 3      -- <<== count of genre_id
Run Code Online (Sandbox Code Playgroud)