或SQL中的语句

时间:2017-09-27 14:00:57

标签: sql

我试图在SQL中使用或声明,但它没有产生我想要的结果。

这里我想扩展代码,使它们成为0012或0005,其余条件相同。这是我想要修改的代码,我刚刚添加了第二行,但它没有得到我想要的。

 WHERE pr.code = '0005'
      OR pr.code = '0012'
      AND p.effdate > '2/8/2017'
      AND p.pnum not like 'R%'
      AND p.status like '6'

4 个答案:

答案 0 :(得分:4)

您需要添加括号:

WHERE (pr.code = '0005' OR pr.code = '0012')
  AND p.effdate > '2/8/2017'
  AND p.pnum not like 'R%'
  AND p.status like '6'

在这种情况下,正如@MiloBellano在答案中提到的那样,您可以使用IN运算符来防止此类错误:

WHERE pr.code IN ('0005', '0012')
  AND p.effdate > '2/8/2017'
  AND p.pnum not like 'R%'
  AND p.status like '6'

答案 1 :(得分:1)

一个词:括号

(额外的话使帖子足够长)

答案 2 :(得分:1)

  WHERE (pr.code = '0005'
  OR pr.code = '0012')
  AND p.effdate > '2/8/2017'
  AND p.pnum not like 'R%'
  AND p.status like '6' 

但我认为

  pr.code in ('0005','0012')
  AND p.effdate > '2/8/2017'
  AND p.pnum not like 'R%'
  AND p.status like '6' 

看起来更好,可能更快

答案 3 :(得分:0)



 WHERE (pr.code = '0005'
      OR pr.code = '0012')
      AND p.effdate > '2/8/2017'
      AND p.pnum not like 'R%'
      AND p.status like '6'