使用not in和 not exists这两sql为啥结果不一样?
select   b.*   from   tmp_ddn   a,tmp_ddn   b 
 where   b.order_item_id   =   a.root_order_item_id   and 
 	      not   exists(   select   *   from   tmp_ddn_guoji   where   sn_97   =   a.sn_97   ) 
 and   not   exists(   select   *   from   tmp_ddn_vpn   where   sn_97   =   a.sn_97   ) 
 and   not   exists(   select   *   from   tmp_ddn_shangwang   where   sn_97   =   a.sn_97   )) 
 和   
 select   b.*   from   tmp_ddn   a,tmp_ddn   b 
 where   b.order_item_id   =   a.root_order_item_id   and 
 	   a.sn_97   not   in   (   select   sn_97      from   tmp_ddn_guoji   ) 
                      and   a.sn_97   not   in   (   select   sn_97      from   tmp_ddn_vpn   ) 
                      and   a.sn_97   not   in   (   select   sn_97      from   tmp_ddn_shangwang   )   
 这两语句的意思应该相同吧?为什么结果不同?   
------解决方案--------------------有空值是会不一样。
------解决方案--------------------sn_97   有空值
------解决方案--------------------如果不想选择出非空的部分,在第一语句中加 A.SN_97 IS NOT NULL 即可。 
 select b.* from tmp_ddn a,tmp_ddn b 
 where b.order_item_id = a.root_order_item_id and (A.SN_97 IS NOT NULL) 
 not exists( select * from tmp_ddn_guoji where sn_97 = a.sn_97 ) 
 and not exists( select * from tmp_ddn_vpn where sn_97 = a.sn_97 ) 
 and not exists( select * from tmp_ddn_shangwang where sn_97 = a.sn_97 ))