PostgreSQl - 有没有办法从一个表到另一个表进行Upsert?

时间:2018-05-24 11:45:53

标签: sql postgresql postgresql-10

我想在PostgreSQl中从一个表插入或更新到另一个表。

到目前为止,我所做的是将两个SQL命令用于插入,一个用于更新。那么只用一个命令就可以做到这一点吗?

CREATE TEMP TABLE IF NOT EXISTS tmp_table_a (LIKE table_a INCLUDING DEFAULTS);
COPY tmp_table_a FROM STDIN DELIMITER ',' CSV;
UPDATE table_a a SET (id, column1, column2) = (tmp.id, tmp.column1, tmp.column2) FROM tmp_table_a tmp WHERE a.id = tmp.id;
INSERT INTO table_a (id, column1, column2) SELECT tmp.id, tmp.column1, tmp.column2 FROM tmp_table_a tmp WHERE tmp.id not in (select distinct id from table_a);

0 个答案:

没有答案