簡體   English   中英

SQL查詢未給出預期結果

[英]SQL query not giving expected result

我使用此查詢從具有這些條件的表中獲取數據,但查詢給了我意外的數據。 這是我的SQL查詢。

SELECT userCode, email, isSubscribe FROM users WHERE 1 
    AND (city = 'Boston' AND stateCode = '3fe5003edc0cb6c83962dbd74d35dd50' AND zipcode = '32564')
    OR accountType = 'O' 
    OR helpMoreType = 'DI' 
    OR helpMoreType = 'CO' 
    OR helpMoreType = 'AD'
    AND accountStatus = 'A' 
    AND isSubscribe = 'Y' 
    AND accountType != 'S'

它顯示具有isSubscribe = N的意外記錄

在對SQL查詢進行修改后,它顯示確切的數據,我想要的和修改后的查詢是:

SELECT userCode, email, isSubscribe FROM users WHERE 1 
AND (city = 'Boston' AND stateCode = '3fe5003edc0cb6c83962dbd74d35dd50' AND zipcode = '32564')
OR (accountType = 'O' 
OR helpMoreType = 'DI' 
OR helpMoreType = 'CO' 
OR helpMoreType = 'AD')
AND accountStatus = 'A' 
AND isSubscribe = 'Y' 
AND accountType != 'S'

但是我無法理解兩個查詢之間的區別是什么? 誰能指出這兩個查詢?

謝謝

OR表達式不限制在括號內時,則表示符合OR分隔條件之一的任何記錄都可以返回。

當您將它們綁定在括號內時,您將創建一個依賴於多個可能條件的單個條件來滿足該條件。

例如,如果您考慮一些現實世界的對象:

“購買水果和蔬菜”定義為“香蕉” OR “蘋果” OR “橙子” AND “洋蔥” ,表示如果您購買任何水果,則滿足“香蕉”將評估為True然后移至下一行。

而是定義為( “香蕉” OR “蘋果” OR “橙子”AND “洋蔥” ,表示您可以購買三種水果中的任何一種,但也必須購買“洋蔥”才能滿足條件評估為True

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM