MySQL 提供 INSERT ... ON DUPLICATE KEY UPDATE 語法,當唯一鍵衝突時自動轉為更新,達到 Oracle MERGE 類似效果。
INSERT INTO tbl (colA, colB, colC) VALUES (1, 2, 3) ON DUPLICATE KEY UPDATE colA = 新值, colB = 新值, ...;
INSERT INTO tbl (columnA, columnB, columnC) VALUES (1, 2, 3) ON DUPLICATE KEY UPDATE columnA = IF(columnB > 0, 1, columnA);
INSERT INTO tbl (columnA, columnB, columnC) VALUES (1, 2, 3)
ON DUPLICATE KEY UPDATE
columnA = IF(columnB > 0, 1, columnA),
columnB = IF(columnC > 0, 1, columnB),
columnC = IF(columnA > 0, 1, columnC);
Conditional Duplicate Key Updates with MySQL - 進階條件更新技巧