[MySQL] 深入 MySQL INSERT ... ON DUPLICATE KEY UPDATE 語法
必要條件
- 資料表中必須有 PRIMARY或UNIQUE的索引
- INSERT時須帶入1. 欄位的資料
使用情境
一般我們在做資料新增時會先檢查資料是否存在,都會使用下列語法
IF(SELECT * FROM table WHERE id= '1')UPDATE table SET a= a+ 1 WHERE id= '1';ELSEINSERT INTO table (id, a) VALUES (2, 1);
可以改成
INSERT INTO table (id, a) VALUES (2, 1) ON DUPLICATE KEY UPDATE a= a+ 1;
Mysql會自動判斷該主鍵是否重覆,如果重覆就會叫用後面的 UPDATE
多行資料處理
若是用批量新增,則可以在ON DUPLICATE KEY UPDATE 後用VALUES,以下範例:
a為UNIQUE,並且資料存在 (2,1,1) 和 (1,3,3),因為a已存在,所以會將(1,3,3)更新至(1,2,3), (2,1,1)更新至 (2,5,1) ,其餘則插入新紀錄
INSERT INTO TABLE (a,b,c) VALUES(1,2,3),(2,5,7),(3,3,6),(4,8,2)ON DUPLICATE KEY UPDATE b=VALUES( b)
注意:ON DUPLICATE KEY UPDATE 為MySQL特有語法,並不是SQL標準語法
參考資料:
留言
張貼留言