选择与外国ID匹配的两行?

时间:2012-11-17 15:50:20

标签: mysql sql

我试图获取属于两种类型(类别)的所有movies_name,

即。 SCHEMA

movie_id  genre
4         Action
4         Comedy

SQL:

SELECT movies.movie_name
FROM movies
INNER JOIN tags
ON movies.movie_id = tags.movie_id
WHERE tags.genre = 'Comedy'
AND tags.genre = 'Action'

这应该让我回到movie_id 4的movie_name。

这让我回到零结果,当我知道他们应该使用我的测试数据时得到三个结果时,我在查询错误。

2 个答案:

答案 0 :(得分:4)

SELECT movies.movie_name
FROM movies
INNER JOIN tags
ON movies.movie_id = tags.movie_id
WHERE tags.genre IN ('Comedy','Action')
GROUP BY movies.movie_name
HAVING COUNT(*) = 2

如果没有为每部电影的流派指定唯一约束,则需要添加DISTINCT

SELECT movies.movie_name
FROM movies
INNER JOIN tags
ON movies.movie_id = tags.movie_id
WHERE tags.genre IN ('Comedy','Action')
GROUP BY movies.movie_name
HAVING COUNT(DISTINCT tags.genre) = 2

答案 1 :(得分:0)

Tags.genre不能同时'喜剧'和'动作' 。你需要IN这样的句子:

`SELECT fields FROM tables WHERE tags.genre IN('Comedy','Action')