AdvancedINSERT, UPDATE, DELETE
MERGE statement (PostgreSQL 15+)
The query
SQL
MERGE INTO employees AS target
USING (VALUES
(101, 'John', 'Doe', 75000),
(999, 'New', 'Employee', 55000)
) AS source(emp_id, first_name, last_name, salary)
ON target.emp_id = source.emp_id
WHEN MATCHED AND target.salary != source.salary THEN
UPDATE SET salary = source.salary
WHEN NOT MATCHED THEN
INSERT (first_name, last_name, salary)
VALUES (source.first_name, source.last_name, source.salary)
WHEN MATCHED AND source.salary IS NULL THEN
DELETE;Note
“MERGE (SQL:2003 standard) replaces complex UPSERT patterns. Available in PostgreSQL 15+.