select * from t
where aa='11'
bb='22'
如果aa不等于11,语句就是select * from t where bb='22'
如果aa=11,语句就是select * from t where aa='11'
这个要怎么写呢?这里不是or 的问题。
aa bb
11 22
00 22
22 00
22 11查出来的结果应该是
aa=11时
11 22
aa<>11时
11 22
00 22

解决方案 »

  1.   

    这是or,能是什么呢?应该就是
    select * from t
    where aa='11' or bb='22'
      

  2.   


    select * from t
    where aa='11' or (aa<>'11' and bb='22')
      

  3.   

    select * from t where aa='11' or bb='22'
      

  4.   

    select * from t where aa='11' or (aa<>'11' and bb='22')
      

  5.   

    楼主,你仔细琢磨琢磨,aa='11' or (aa<>'11' and bb='22')是等价于aa='11' or bb='22'的,你为什么要让系统多比较一次呢!
      

  6.   

    只有当 a<>11 时,才会去比较 b=22
      

  7.   

    aa='11' or (aa<>'11' and bb='22')
    我要的就是这样,当时卡壳想不通。后来自己想通了。
      

  8.   


    declare @T table 
    (aa varchar(2),bb varchar(2))
    insert into @T
    select '11','22' union all
    select '00','22' union all
    select '22','00' union all
    select '22','11'DECLARE @aa VARCHAR(4)
    SET @aa='11'
    select * from @T WHERE aa='11' OR bb='22'
    /*
    aa   bb
    ---- ----
    11   22
    00   22  --楼主的意思是aa='11'的时候结果中不含有这条
    */