where ((ozi.TOTALFEE > 0) OR (ozi.NETCODE = '02' AND ozi.PAY_MODE = '03')) 
   AND ozi.ACCT_MONTH = '200810'
   AND ozi.pay_mode IN ('03', '04')
   

where ((ozi.TOTALFEE > 0) OR (ozi.NETCODE = '02' AND ozi.PAY_MODE = '03')) 
   AND ozi.ACCT_MONTH = '200810'
   
   有什么区别???

解决方案 »

  1.   

    区别在于第二句少了个过滤条件AND ozi.pay_mode IN ('03', '04') 
      

  2.   


    select *
      from tableA
     where ((ozi.TOTALFEE > 0) OR (ozi.NETCODE = '02' AND ozi.PAY_MODE = '03'))
       AND ozi.ACCT_MONTH = '200810'
       AND ozi.pay_mode IN ('03', '04');
      
    select *
      from tableA
     where ((ozi.TOTALFEE > 0) OR (ozi.NETCODE = '02' AND ozi.PAY_MODE = '03'))
       AND ozi.ACCT_MONTH = '200810';
               
    --很显然,第一句多了个AND ozi.pay_mode IN ('03', '04')条件啊?!
      

  3.   

    AND ozi.pay_mode IN ('03', '04') 
    第一句比第二句多了限制条件,这句的意思是ozi.pay_mode 的值必须是('03', '04')这个集合中的元素之一
      

  4.   

    晕,多了一个and条件都没发现吗????
      

  5.   

    楼主是不是想问:ozi.pay_mode IN ('03', '04') 

    ozi.pay_mode='03' or ozi.pay_mode='04'区别