这似乎是一个愚蠢的问题,但如何让多个' 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))
答案 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 );