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';
但是,我没有从这个查询中得到任何输出,我不知道为什么。任何见解都值得赞赏。
解决方案
您可以进行聚合和使用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
推荐阅读
- python - 如何使用 Selenium 填写包含多行的表格?
- database - 使用 sqlAlchemy 连接到 cPanel 数据库
- angular - NgRx 无需订阅即可获取价值
- html - fromEvent 返回属性在“事件”类型上不存在
- mysql - 为什么 Distinct * 不起作用但 count(Distinct *) 起作用?
- python - Python简单计数脚本
- facebook - facebook meta og:图片未显示在帖子中
- r - Naming a dataframe like the path
- sql - Tracking LIFO Orders in SQL
- inkscape - Inkscape 0.92.2 quits trying to open old file with 90dpi scaling