我有下表称为电影:
id | title | year
308 Coraline 2009
125 Harry Potter and the Prisoner of Azkaban 2004
204 Hugo 2011
和表格类型:
movie_id | genre
308 Fantasy
308 Thriller
125 Fantasy
125 Mystery
204 Fantasy
204 Mystery
204 Drama
其中movie_id是一个外键,它引用了电影表中的属性ID。我正在尝试获取所有属于幻想和神秘类型的电影(即输出电影应该是哈利·波特和雨果)。
我有以下查询:
SELECT title, year
FROM Movies, Genre
WHERE Movies.id=Genre.movie_id AND genre = 'Fantasy' AND genre = 'Mystery';
但是,此查询没有任何输出,我不确定为什么。任何见解都会受到赞赏。
答案 0 :(得分:3)
您可以进行汇总并使用having
:
SELECT m.id, m.title
FROM Movies m INNER JOIN
Genre g
ON g.movie_id = m.id
WHERE g.genre IN ('Fantasy', 'Mystery')
GROUP BY m.id, m.title
HAVING COUNT(distinct g.genre) = 2; -- Count of where clause