现在有三张表T1、T2、T3,现在要用select语句把T1的数据根相关条件插入到T2中,其中一个条件是T1的substr(T1.d,2,3)=T3.C的数据才能插入到T2中去
请问下面哪个方法比较好?
1.在select语句中直接用IN
insert into T2
slect
  T1.a
  ,(case 
     when  
     substr(T1.D,4,4) in (select C from T3)
     then 'good'
   else 'error'
  end)
from T1 
 
2.用关联
slect
  a1.a
  ,(case 
     when  
     substr(T1.D,4,4)=t3.c
     then 'good'
   else 'error'
  end)
from T1 
left join T3  
on substr(T1.d,2,3)=T3.c 请问大侠用哪个方法比较好?效率高

解决方案 »

  1.   

    slect 
        T1.a 
        ,(case   
              when     
              substr(T1.D,4,4)   in   (select   C   from   T3) 
              then   'good ' 
          else   'error ' 
        end) 
    from   T1   
    这样选出的数据不时你想要插入的数据吧. 只是选出符合条件插入的数据. 标志为good.否则为error了.
        
      

  2.   

    1、按照楼主的描述(现在有三张表T1、T2、T3,现在要用select语句把T1的数据根相关条件插入到T2中,其中一个条件是T1的substr(T1.d,2,3)=T3.C的数据才能插入到T2中去 ):
    insert   into   T2
    slect
        T1.a,
        T3.c,
    from   T1    left join  T3  on substr(T1.d,2,3)=T3.C
    where T3.c is not null;
    2、按照代码:
    insert   into   T2
    slect
        T1.a,
        decode(T3.c,'good','','error')
    from   T1    left join  T3  on substr(T1.d,2,3)=T3.C;