我试图获取属于两种类型(类别)的所有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。
这让我回到零结果,当我知道他们应该使用我的测试数据时得到三个结果时,我在查询错误。
答案 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')