[英]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.