Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 选择与外部id匹配的两行?_Mysql_Sql - Fatal编程技术网

Mysql 选择与外部id匹配的两行?

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

我想把所有电影的名字都分为两大类

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 ('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