2016-06-08 92 views
2

我在我的WHERE語句中有一個聚合函數以及其他更正常的WHERE約束。如果我使用所有AND語句將WHERE語句綁定在一起,那麼查詢就會正常工作。SQL-需要一個圍繞多個WHERE約束的方法

但是,我需要使用OR語句來獲得正確的數據。當我嘗試使用OR語句運行查詢時,我收到一個「除以零」 錯誤。這是發生,儘管我的限制之一是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 
+8

記住它不是一個程序性的語言從而發動機能夠決定「執行順序」,甚至嘗試並行執行。在這種情況下,您可以將測試更改爲** ExamplePrice = ExampleAmount * ExampleQuantity **。 – jean

回答

4

作爲jean表明,簡單地重寫分割爲乘法避免除以零。

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

我想你的測試可能是錯誤的,通常價格意味着每單位價格和代表總價

+0

價格,數量和金額實際值的懶惰佔位符。我相信重寫會起作用,但是我現在無法對它進行測試。我不知道爲什麼我從一開始就沒有想到這一點。 – Jabo13

1
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;