我可以更新,我可以删除很好,但我想一次做两个。
我有一个像这样的表ORIG,列名是
ref,fname,lname,add1,add2,add3,add4
A1 a b c d h j
S2 f d s e y t
B3 j f s e o p
第一列是唯一的
然后是另一个表格这样的
ref,fname,lname,add1,add2
A1 b c d e
B3 k g h t
我想使用第二个表更新第一个表并删除任何不具备唯一性的行
所以最终结果必须是下面的表ORIG
A1 b c d e h j
B3 k g h t o p
我能一次完成吗?
答案 0 :(得分:2)
我可能会使用CTE来解决这个问题:
with u as (
update orig
set b = d.b, . . .
from data d
where d.a = orig.a
returning *
)
delete from orig
where not exists (select 1 from u where u.a = d.a);
第一个CTE更新行。第二个是删除。
答案 1 :(得分:0)
您可以使用相关的子查询:
delete
from orig o
where not exists (
select 1
from data d
where d.col1 = o.col1
)