select sname 
 from   table1
 where  snumber  in
 (select  snumber2 from table2 where sname2 = 'xiao')
 or     snumber  in
 (select  snumber3 from table2 where sname2 = 'xiao')
or     snumber  in
 (select  snumber4 from table2 where sname2 = 'xiao')
or     snumber  in
 (select  snumber5 from table2 where sname2 = 'xiao')
or     snumber  in
 (select  snumber6 from table2 where sname2 = 'xiao')
or     snumber  in
 (select  snumber7 from table2 where sname2 = 'xiao')
如何将上面的语句写的简洁,正确。
主要内容是: 检测  table1中snumber字段是否与table2中(snumber2到snumber7中)任意一个字段匹配。

解决方案 »

  1.   

    select A.sname
    from table1 A,table2 B
    where B.sname2='xiao' and (A.snumber=B.snumber2 or
    A.snumber=B.snumber3 or
    A.snumber=B.snumber4 or
    A.snumber=B.snumber5 or
    A.snumber=B.snumber6 or
    A.snumber=B.snumber7 )
      

  2.   

    select a.sname from a,b where b.sname2=
    'xiao' and decode(a.snumber,b.snumber2,1,b.sumber3,1,
    b.snumber4,1,b.snumber5,1,b.snumber2,1,b.snumber6,1,
    b.snumber7,1)=1
      

  3.   


    select  a.sname from table1 a
    inner join table2 b
    on b.sname2='xiao' and (a.snumber=b.snumber2 or 
    a.snumber=b.snumber3 or 
    a.snumber=b.snumber4 or 
    a.snumber=b.snumber5 or 
    a.snumber=b.snumber6 or 
    a.snumber=b.snumber7)用inner join 在理论上是否比你的效率要高些啊?