编写SQL查询以查找表X中列A中表Y中不存在的值。
更新:查询花费的时间太长而没有(超过5分钟,我没有等待它完成)表Y中的列B是主键。
更新:即时通讯使用oracle。两个表的表大小以百万(行)为单位。当然,我正在使用另一个WHERE子句,这意味着我在表Y中比较了大约500,000行表X和数百万行
答案 0 :(得分:7)
无法 依赖NOT IN
如果 任何 YULLS在YB中
Select A from X where not EXISTS (select * from Y where Y.B = X.A)
最安全的方式是NOT EXISTS
。如果Y是A
OUTER JOIN
可能会提供更多行
答案 1 :(得分:2)
我能想到有4种方法可以做到这一点。
MINUS
运算符)最后一个在Oracle中似乎是the preferred way of doing it,但我自己也无法保证。
答案 2 :(得分:0)
这应该有效:
Select A from X where not A in (select B from Y)