我有一个包含两个外键的表 (movies
),(movie_id
, genre_id
)。当然,这两个字段都不是唯一的。
如何选择具有两种或更多种特定类型的电影?
我想做这样的事情:
SELECT movie_id
FROM movies
WHERE genre_id = 1 AND genre_id = 2 AND genre_id = 3
最佳答案
这是一个关系划分
问题。
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
如果 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
关于mysql - 如何解决这个关系划分查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16803909/