2016-02-12 31 views

回答

1

这里的证明,负和不存在的查询不返回相同的结果:

减查询

with t1 as (select 1 id, 'a' val from dual union all 
      select 1 id, 'a' val from dual union all 
      select 2 id, 'b' val from dual), 
    t2 as (select 2 id, 'b' val from dual union all 
      select 3 id, 'c' val from dual) 
select id, val 
from t1 
minus 
select id, val 
from t2; 

减结果

 ID VAL 
---------- --- 
     1 a 

NOT EXISTS查询

with t1 as (select 1 id, 'a' val from dual union all 
      select 1 id, 'a' val from dual union all 
      select 2 id, 'b' val from dual), 
    t2 as (select 2 id, 'b' val from dual union all 
      select 3 id, 'c' val from dual) 
select id, val 
from t1 
where not exists (select null 
        from t2 
        where t1.id = t2.id 
        and t1.val = t2.val); 

NOT EXISTS结果

 ID VAL 
---------- --- 
     1 a 
     1 a 
+0

感谢您的回答 – Mayuran

相关问题