我有一个表A
,其中包含约一千万行,而表B
,它包含有关表A
中某些行的一些更新信息,并且还包含不存在的新行表A
。
我想使用表A
更新表B
,并同时插入表A
中不匹配的行。
我找到了许多答案,例如下面的解决方案,但似乎他们都错过了我要找的插入部分。
UPDATE A
SET code = B.code
FROM B
WHERE A.id = B.id
答案 0 :(得分:1)
使用两个查询:
update a
set code = b.code
from b
where a.id = b.id;
insert into a (id, code)
select id, code
from b
where not exists (select 1 from a where a.id = b.id);
您也可以使用on conflict
insert into a (id, code)
select b.id, b.code
on conflict on constraint a_id
do update set code = b.code;