sqlintermediate
SQL MERGE (Standard Upsert)
Use the SQL MERGE statement for atomic insert-or-update operations with matched/not-matched clauses.
sqlPress ⌘/Ctrl + Shift + C to copy
-- PostgreSQL 15+ MERGE syntax
MERGE INTO products AS target
USING staging_products AS source
ON target.sku = source.sku
WHEN MATCHED AND source.price <> target.price THEN
UPDATE SET
price = source.price,
updated_at = NOW()
WHEN NOT MATCHED THEN
INSERT (sku, name, price, created_at)
VALUES (source.sku, source.name, source.price, NOW())
WHEN NOT MATCHED BY SOURCE THEN
UPDATE SET
is_active = false;Use Cases
- Data warehouse loading
- Syncing external data
- Incremental updates
Tags
Related Snippets
Similar patterns you can reuse in the same workflow.
sqlintermediate
SQL Upsert and Merge Patterns
Insert or update records atomically using ON CONFLICT, MERGE, and database-specific upsert syntax.
Best for: Syncing data from external sources
#sql#upsert
sqlintermediate
MERGE / UPSERT Statement
Use MERGE or INSERT ON CONFLICT to upsert rows in a single statement.
Best for: Syncing data from staging tables
#sql#merge
sqlintermediate
UPSERT with ON CONFLICT
Insert or update rows atomically using PostgreSQL ON CONFLICT clause with partial indexes and conditions.
Best for: Sync external data sources
#upsert#postgresql
sqladvanced
ETL Pipeline - Technique 39
Extract Transform Load
Best for: database operations
#sql#database