我有一个网站上的项目列表。每个项目都附加了几个类别,我们将这些类别称为电影流派。在高级搜索中,我让人们选中他们喜欢的类型的复选框,它会输出与任何选定类型匹配的电影列表。
我有一个这样的查询:
AND column IN ('5', '8', '9')
这里的问题是,如果您选择“动画”和“恐怖”,您将获得一堆迪士尼卡通(“动画”)和 SAW 系列(“恐怖”)。
我想将搜索调整为包含所有内容,因此它只会返回匹配所有选定类型的结果,因此将返回标记为“动画”和“恐怖”的项目。
item_id 和 category_id 对存储在单独的表中。因此,对于 ID 为 55 的电影,可能有 4 个流派,因此 item_id = 55 将有 4 行,并且 category_id 等于 4 个类别 ID。
最佳答案
编辑:修改了我的答案以更接近 OP 的编辑问题。
select i.MovieName
from item i
inner join ItemCategory ic
on i.item_id = ic.item_id
where i.item_id = 55
and ic.category_id in ('5','8','9')
group by i.MovieName
having count(distinct ic.category_id) = 3
关于sql - 使用 MySQL IN 子句作为全包(AND 而不是 OR),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4751361/