MySQL选择过滤条件

时间:2015-12-09 09:04:41

标签: mysql

我有一个类似于这样的表结构:

Movies
movie_id   genre_id
1             1
2             5
1             2
5             5
1             5

所以有许多类型的电影。我需要根据长度可变的类型来选择电影,即我被指定查找具有genre_id的电影:1和5(例如)。但是我似乎找不到一种方法来选择它们而不使用很多派生表(如选择每个类型而不是将它们连接在一起)或使用OR(实际上意味着OR所以选择1而不是5,反之亦然。

显然使用WHERE不起作用,因为条件WHERE genre_id = 1 AND genre_id = 5不可满足。如何在不使用许多派生表(或更快)的情况下执行此操作,并且是否存在这种模式的一般方法(因为我非常确定这是组织数据的一种非常常见的方式)。

1 个答案:

答案 0 :(得分:2)

您可以使用GROUP BY查询:

SELECT movie_id
FROM movies
WHERE genre_id IN (1,5)
GROUP BY movie_id
HAVING COUNT(*)=2

这里你可以计算满足条件genre_id IN(1,5)

的行数