【发布时间】:2017-05-15 11:50:52
【问题描述】:
我目前有两个结构相同的表。表 A(例如)有 10,000 行,表 B 有 100,000 行。我需要获取表 B 中不在表 A 中的行,但前提是某些字段相同(而一个字段不同)。
现在,查询类似于:
select *
from tableA A
where (A.field1, A.field2) in (select field1, field2 from tableB B)
and A.field3 not in (select field3 from B)
这行得通,但使用JOINs 可能会获得更好的性能解决方案。我试过这样做,但我得到的只是一个非常庞大的重复行列表。有人能指出我正确的方向吗?
【问题讨论】:
-
和field1和field3条件无关?
-
我想问和@jarlh 一样的问题:你确定你当前的查询是正确的吗?
-
that are in Table B that are not in Table A,...这与您的查询冲突。你在某处交换了 A B 吗?
标签: sql postgresql select join