【问题标题】:The use of IN operator in a SQL query在 SQL 查询中使用 IN 运算符
【发布时间】:2016-04-09 03:09:34
【问题描述】:

我有一个产品数据库,与车辆品牌和型号相关联。

我有产品的参考资料和该产品可以运行的型号。在网络上,我选择了一些模型,我选择了一个模型,查询的类型是:

SELECT * FROM {tables - relationships among tables } WHERE [...] model = 125

现在,如果在选择字段中我允许进行多次检查,我会有类似的东西

SELECT * FROM {tables - relationships among tables } WHERE [...] model IN (125, 126, 127)

这还好。会退回适用于125或126或127型号的产品。一个产品可用于125和126,其他产品只能用于127等。

现在,如果我想要只能在所有三个选定型号中使用的产品,即 125 和 126 和 127,我很困惑,不知道该怎么做,因为 IN 运算符将返回与第二个例子。

是否需要考虑一些 GROUP BY 操作?

【问题讨论】:

  • GROUP BY {product} HAVING COUNT(DISTINCT model) = 3(如果model 必须不同,您可以省略该关键字以节省额外的排序操作)。
  • 非常感谢,现在看来很合乎逻辑。 :)

标签: mysql sql group-by operator-keyword


【解决方案1】:

根据用户 eggyal 的建议(见上面的评论),我已经尝试过

SELECT * FROM {tables - relationships among tables } WHERE [...] model IN (125, 126, 127) GROUP BY {product} HAVING COUNT(DISTINCT model) = 3

成功了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-05
    • 2020-06-06
    • 1970-01-01
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-30
    相关资源
    最近更新 更多