Mysql 选择与外部id匹配的两行?
我想把所有电影的名字都分为两大类 i、 e.模式Mysql 选择与外部id匹配的两行?,mysql,sql,Mysql,Sql,我想把所有电影的名字都分为两大类 i、 e.模式 movie_id genre 4 Action 4 Comedy SQL: 这会让我想起电影id 4的电影名称 这让我回到了零结果,当我知道他们应该是三个结果使用我的测试数据,我做的查询错误 SELECT movies.movie_name FROM movies INNER JOIN tags ON movies.movie_id = tags.movie_id WHERE tags.genre IN ('C
movie_id genre
4 Action
4 Comedy
SQL:
这会让我想起电影id 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
如果未为每部电影的类型指定唯一约束,则需要添加不同的约束
如果未为每部电影的类型指定唯一约束,则需要添加不同的约束
Tags.genre不能同时是“喜剧”和“动作”。您需要这样的IN子句:
`从表中选择字段,其中“喜剧”、“动作”中的tags.genre不能同时为“喜剧”和“动作”。您需要这样的IN子句:
`从“喜剧”、“动作”中的tags.genre所在的表格中选择字段。您必须使用OR或IN语句您必须使用OR或IN语句谢谢,他们允许我时会正确标记您的答案:+1我本来会使用双连接,但这更干净+1.你能给我解释一下最后一行吗2@unknown因为movies.movie_name应该返回两行,因为IN子句将在两个条件下匹配它。尝试执行此选择movies.movie\u name FROM movies INNER JOIN tags ON movies.movie\u id=tags.movie\u id WHERE tags.genre在“喜剧”中,“动作”谢谢,当他们允许我时,将正确标记您的答案:+1我会选择双重连接,但这更干净+1.你能给我解释一下最后一行吗2@unknown因为movies.movie_name应该返回两行,因为IN子句将在两个条件下匹配它。尝试执行此选择movies.movie\u name FROM movies INNER JOIN tags ON movies.movie\u id=tags.movie\u id WHERE tags.genre IN'喜剧片','Action'如果电影在IN子句中至少有一种类型,则仍将返回电影。如果电影在IN子句中至少有一种类型,则仍将返回电影。
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
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