检查多个'in'结果的数据

时间:2015-03-18 12:45:25

标签: oracle

这似乎是一个愚蠢的问题,但如何让多个' in'结果?

我有2个表(tab1,tab2),它们具有相同的2列:table_name和column_name。

我想检查tab_name中table_name中的数据和tab2中不存在的数据

这个查询错误但与我想要的类似:

  select distinct s.table_name , s.column_name from tab1 s   where
 (S.table_name ,s.column_name) not in ((select table_name from tab2 ,
 (select column_name from tab2))

3 个答案:

答案 0 :(得分:4)

如果要消除第二个表中存在对(tname,tcolumn)的行,则:

select distinct s.table_name, s.column_name 
  from tab1 s
  where (s.table_name, s.column_name) 
    not in (select table_name, column_name from tab2)

...如果要消除所有内容,如果table2中存在tname或tcolumn:

select distinct s.table_name, s.column_name 
  from tab1 s
  where s.table_name not in (select table_name from tab2)
    and s.column_name not in (select column_name from tab2)

答案 1 :(得分:2)

select  s.table_name , s.column_name 
from tab1 s
MINUS
select  t.table_name , t.column_name 
from tab2 t;

这应该只提供tab1中的数据

答案 2 :(得分:1)

始终可以选择使用NOT EXISTS

SELECT s.table_name, s.column_name
  FROM tab1 s
 WHERE NOT EXISTS ( SELECT 1 FROM tab1 t
                     WHERE t.table_name = s.table_name
                       AND t.column_name = s.column_name );