提问者:小点点

仅使用所选选项进行MySQL搜索


我有三个表moviescategoriesmovie_categories

表:电影#title---------1电影-1 2电影-2 3电视-1

表:类别#标题--------1恐怖2喜剧3(电视)4科幻

表:Movie_Categories#movie_id category_id---------------1 1 1 2 2 4 3 3 3 4 3 4

我正在尝试提取只有movie_categories.category_id:3&4的记录

SELECT `movies`.`title` FROM `movie_categories`
INNER JOIN `movies` ON `movies`.`id` = `movie_categories`.`movie_id`
WHERE `category_id` = 3
AND `category_id` = 4

如果我使用而不是,那么它将显示具有所选类别之一的所有记录。

我做错了什么?


共1个答案

匿名用户

34不能在单行中有效。因此,您的where子句过滤掉所有行。

您需要不同行中的值,因此需要聚合--然后在聚合之后进行筛选:

SELECT mc.movid_id
FROM movie_categories mc
WHERE mc.category_id IN (3, 4)
GROUP BY mc.movie_id
HAVING COUNT(*) = 2;   -- both rows are present

请注意,您的查询还引用了title,但它不在movie_categories数据库中。您需要join(当然,还有其他方法,但这是最常见的)来从movie_id获取标题。我会让你继续努力的。