SQL Where语句中AND与OR的计算次序 .

AND 用在where子句中,用来指示检索满足所有给定条件的行,而OR用在where子句中,用来指示检索匹配任一给定条件的行。

Where子句中可包含任意数目的AND和OR操作符号,但是要注意在SQL规范中AND操作符的优先级要高于OR操作符。

若一时大意,操作符就会被错误组合,查询出来的结果也是与自己期望南辕北辙了。

 

假如需要列出价格为5元以上且由瑞兴生物制药公司或星城制药厂生产的所有产品

  1. 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
  1. prod_name                 prod_price  
prod_name                 prod_price
  1. 苯唑西林钠(苯唑青霉素)        6.50  
  2. 头孢氨苄                       13.50  
  3. 头孢羟氨苄                     8.00  
  4. 硫酸庆大霉素                   15.00  
  5. 红霉素                         5.50  
苯唑西林钠(苯唑青霉素)        6.50
头孢氨苄                       13.50
头孢羟氨苄                     8.00
硫酸庆大霉素                   15.00
红霉素                         5.50


这个查询的结果与自己期望的结果不一致。

  1. 硫酸庆大霉素                   15.00  
硫酸庆大霉素                   15.00


此问题就是由于使用OR、AND操作符默认计算次序造成的,解决的方法就是使用括号明确地分组相应的操作符。

  1. 任何时候使用具有AND和OR操作的where子句,都应该使用括号明确地分组操作符消除歧义,不要过分的依赖默认计算次序。  
posted @ 2013-10-09 12:30  prvin  阅读(3072)  评论(0编辑  收藏  举报