我想在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);