Plsql 仅返回其他表中不存在值的行

Plsql 仅返回其他表中不存在值的行,plsql,Plsql,我有一个带有Id列的表A 我有一个带有Id1和Id2列的表B 我想返回表b中Id1或Id2均不存在于表A中的所有行。如果表b中的Id1或Id2在表a中有匹配项,我想返回该结果 因此,如果表A如下所示: Id 123 456 789 Id1 Id2 123 545 343 432 184 789 而表B如下所示: Id 123 456 789 Id1 Id2 123 545 343 432 184 789 第1行和第3行不会返回,因为它们在表a中都有匹配项。

我有一个带有Id列的表A

我有一个带有Id1和Id2列的表B

我想返回表b中Id1或Id2均不存在于表A中的所有行。如果表b中的Id1或Id2在表a中有匹配项,我想返回该结果

因此,如果表A如下所示:

Id    
123
456
789
Id1 Id2    
123 545
343 432
184 789
表B如下所示:

Id    
123
456
789
Id1 Id2    
123 545
343 432
184 789
第1行和第3行不会返回,因为它们在表a中都有匹配项。但是,表b中的第2行与这两列都不匹配,因此将返回该行


我一直在绞尽脑汁,似乎搞不懂这个问题。任何帮助都将不胜感激

假设您的Id列不为空:

select * from tableB 
where Id1 not in (select Id from tableA) 
and Id2 not in (select Id from tableA) 


假设您的Id列不为空:

select * from tableB 
where Id1 not in (select Id from tableA) 
and Id2 not in (select Id from tableA) 


在查找另一个表中不存在某些数据的记录时,始终存在exists子句,因此命名为;-)


在查找另一个表中不存在某些数据的记录时,始终存在exists子句,因此命名为;-)


为什么要查询
a
两次<代码>从表b中选择b.*(b.id1=a.id或b.id2=a.id)左连接表a,其中coalesce(a.id1,a.id2)为空@haki-好的解决方案!您可以将其作为单独的答案发布。为什么要查询
a
两次<代码>从表b中选择b.*(b.id1=a.id或b.id2=a.id)左连接表a,其中coalesce(a.id1,a.id2)为空@haki-好的解决方案!你可以把它作为单独的答案贴出来。