I very useful statement I like of MySql is REPLACE INTO table
that is 'REPLACE a value if-exist OR INSERT INTO table If-Not-Exist'.
The documentation of db2 REPLACE
is for a function operating on strings only so not with that meaning.
Is there any equivalent in db2? Right now I am looking also for keywords IF EXSTS/IF NOT EXIST
.
DB2 uses the SQL standard MERGE
statement to do basically the same thing. The syntax is different:
MERGE INTO table_to_upsert AS tab
USING (VALUES
(1, 2, 3),
(4, 5, 6),
(7, 8, 9)
-- more rows
) AS merge (C1, C2, C3)
ON tab.key_to_match = merge.key_to_match
WHEN MATCHED THEN
UPDATE SET tab.C1 = merge.C1,
tab.C2 = merge.C2,
tab.C3 = merge.C3
WHEN NOT MATCHED THEN
INSERT (C1, C2, C3)
VALUES (merge.C1, merge.C2, merge.C3)