我有两个结构相同的表,它们有一个键,一个时间戳,一个值和一个外键。
我想列出第二个表中没有匹配记录的所有记录,并且时间戳,值和外键相同?
我该怎么做?
答案 0 :(得分:0)
您可以尝试两种方法,首先使用“存在”:
select a.key,
a.ts,
a.value
from a
where not exists (select 1
from b
where a.key = b.key
and (a.ts != b.ts
or a.value != b.value
or a.fk != b.fk))
;
使用“in”:
select a.key,
a.ts,
a.value
from a
where (a.key, a.ts, a.value) not in (select b.key, b.ts, b.value from b)
;
编辑:我意识到你有四列,很可能在键上匹配。我修改了“exists”查询以反映这一点 - 该查询现在检查表之间的键的匹配,然后检查其他三列中的任何一列是否不同。