PostgreSQL Cheat Sheet/Merge source data

Synchronize target data from a source relation with a single statement.

Section: Insert, Update, Delete, and Merge

Merge source data

sql
sql
MERGE INTO inventory AS i
USING inventory_stage AS s
ON i.sku = s.sku
WHEN MATCHED THEN UPDATE SET qty = s.qty
WHEN NOT MATCHED THEN INSERT (sku, qty) VALUES (s.sku, s.qty);
Explanation

See summary for usage details.

Learn the surrounding workflow

Compare similar commands or jump into common fixes when this command is part of a bigger troubleshooting path.

Related commands

Same sheet · prioritizing Insert, Update, Delete, and Merge
Insert row
Insert one row into a table.
OpenIn sheetsqlsame section
Update rows
Modify matching rows.
OpenIn sheetsqlsame section
Delete rows
Delete matching rows.
OpenIn sheetsqlsame section
Insert multiple rows
Insert many rows in one statement.
OpenIn sheetsqlsame section
Insert with RETURNING
Insert rows and immediately return generated values.
OpenIn sheetsqlsame section
Upsert with ON CONFLICT
Handle unique conflicts by updating instead of failing.
OpenIn sheetsqlsame section