sql - 使用 MySQL IN 子句作为全包(AND 而不是 OR)

标签 sql mysql

我有一个网站上的项目列表。每个项目都附加了几个类别,我们将这些类别称为电影流派。在高级搜索中,我让人们选中他们喜欢的类型的复选框,它会输出与任何选定类型匹配的电影列表。

我有一个这样的查询:

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/

相关文章:

mysql - 访问外键指向的表中的数据

sql - Dateadd 如何影响 SQL 查询的性能?

php - Ajax 处理表单提交但不发布变量数据

php - php 中的 mysql 查询错误地评估为 true

mysql - 如何计算两列与结果之间的差异

sql - 如何从表中两次选择具有不同值的值

java - 获取 SQLJ 更新语句中受影响的行数

mysql - 这个查询可以吗? (SQL 中的多个 JOIN)

php - 如何更新多行并防止sql注入(inject)?

mysql - 如何将mysql用户连接到服务器AWS EC2?