Синтаксис MERGE, используемый для UPSERT или INSERT при дублировании UPDATE

Итак, я исхожу из MySQL, где я мог бы сделать INSERT при DUPLICATE UPDATE :

INSERT INTO table (a,b,c) 
VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;

Но теперь я использую PostgreSQL и есть попытки добавить функциональность UPSERT, похоже, что MERGE может работать для того, что я хотел бы, но хотел посмотреть, является ли это наиболее оптимальным синтаксисом. Пример синтаксиса 1 , Я тоже это видел, но не понимаю, как реализовать . Я еще не пробовал это, потому что думал, что MERGE использовался для слияния данных из table1 в Table2, или что-то вроде этого сработает?

MERGE
INTO    table
USING   table
ON      c = 1
WHEN MATCHED THEN
UPDATE
SET     c=c+1
WHEN NOT MATCHED THEN
INSERT  (a,b,c)
VALUES  (1,2,3)

Есть ли другие предложения?

8
задан Community 23 May 2017 в 12:14
поделиться