SQL - 需要绕过多个 WHERE 约束的方法
SQL - Need a way around multiple WHERE restraints
我的 WHERE 语句中有一个聚合函数以及其他更正常的 WHERE 约束。如果我使用所有 AND 语句将 WHERE 语句连接在一起,则查询检查正常。
但是,我需要使用 OR 语句来获取正确的数据。当我尝试使用 OR 语句 运行 查询时,我收到 "Divide by Zero"
错误。尽管我的限制之一是 ExampleQuantity 不能等于 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;
我的 WHERE 语句中有一个聚合函数以及其他更正常的 WHERE 约束。如果我使用所有 AND 语句将 WHERE 语句连接在一起,则查询检查正常。
但是,我需要使用 OR 语句来获取正确的数据。当我尝试使用 OR 语句 运行 查询时,我收到 "Divide by Zero" 错误。尽管我的限制之一是 ExampleQuantity 不能等于 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;