首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 實現 INSERT 或 UPDATE(ON DUPLICATE KEY UPDATE)類似 Oracle MERGE

     編輯:MySQL 綜合教學

MySQL 實現 INSERT 或 UPDATE(ON DUPLICATE KEY UPDATE)類似 Oracle MERGE

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);

效能特性

  • 若更新值與原值相同,MySQL 內部優化不會實際寫入,無效能負擔
  • 需有 PRIMARY KEY 或 UNIQUE INDEX 觸發重複鍵判斷
  • 適用於「upsert」場景:資料同步、快取更新、計數器遞增

延伸閱讀

Conditional Duplicate Key Updates with MySQL - 進階條件更新技巧

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved