SQL - 需要一种方法来解决多个 WHERE 约束



我的 WHERE 语句中有一个聚合函数以及其他更正常的 WHERE 约束。如果我使用所有 AND 语句将 WHERE 语句绑定在一起,则查询可以正常检查。

但是,我需要使用 OR 语句来获得正确的数据。当我尝试使用 OR 语句运行查询时,我收到"除以零" 错误。尽管我的一个限制是示例数量不能等于 0,但它正在发生。

我应该如何解决这个问题,既可以使用OR语句,又不能有除以零的错误?我确信有一个简单的解决方案,我只是看不到它。

这是我的查询示例:

SELECT *
FROM table1
WHERE ExampleCode1 BETWEEEN 1 AND 10 
  AND ExampleNo IN (1, 2, 3, 4)
  **AND/OR** ExampleQuantity =! 0 
  AND ExamplePrice/ExampleQuantity = ExampleAmount

正如jean所建议的,简单地将除法重写为乘法可以避免除以零。

SELECT *
FROM table1
WHERE ExampleCode1 BETWEEEN 1 AND 10 
AND ExampleNo IN (1, 2, 3, 4)
OR  ExamplePrice * ExampleQuantity = ExampleAmount

我认为您的测试可能是错误的,通常价格表示每单位价格金额代表总价

SELECT * FROM (
   SELECT *
   FROM table1
   WHERE ExampleCode1 BETWEEEN 1 AND 10 
   AND ExampleNo IN (1, 2, 3, 4)
   AND ExampleQuantity =! 0 
) tab_tmp
WHERE AND ExamplePrice/ExampleQuantity = ExampleAmount;

最新更新