SQL:选择属于所有指定流派的所有电影

时间:2019-04-11 12:00:40

标签: mysql sql

我有下表称为电影:

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';

但是,此查询没有任何输出,我不确定为什么。任何见解都会受到赞赏。

1 个答案:

答案 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