AND 用在where子句中,用來指示檢索滿足所有給定條件的行,而OR用在where子句中,用來指示檢索匹配任一給定條件的行。
Where子句中可包含任意數目的AND和OR操作符號,但是要注意在SQL規范中AND操作符的優先級要高於OR操作符。
若一時大意,操作符就會被錯誤組合,查詢出來的結果也是與自己期望南轅北轍了。
假如需要列出價格為5元以上且由瑞興生物制葯公司或星城制葯廠生產的所有產品
- Select prod_name,prod_price From Products Where supply like '瑞興%' or supply like '星城%' And prod_price>=10
Select prod_name,prod_price From Products Where supply like '瑞興%' or supply like '星城%' And prod_price>=10
- prod_name prod_price
prod_name prod_price
- 苯唑西林鈉(苯唑青霉素) 6.50
- 頭孢氨苄 13.50
- 頭孢羥氨苄 8.00
- 硫酸慶大霉素 15.00
- 紅霉素 5.50
苯唑西林鈉(苯唑青霉素) 6.50 頭孢氨苄 13.50 頭孢羥氨苄 8.00 硫酸慶大霉素 15.00 紅霉素 5.50
這個查詢的結果與自己期望的結果不一致。
- 硫酸慶大霉素 15.00
硫酸慶大霉素 15.00
此問題就是由於使用OR、AND操作符默認計算次序造成的,解決的方法就是使用括號明確地分組相應的操作符。
- 任何時候使用具有AND和OR操作的where子句,都應該使用括號明確地分組操作符消除歧義,不要過分的依賴默認計算次序。