必要條件 資料表中必須有 PRIMARY或UNIQUE的索引 INSERT時須帶入1. 欄位的資料 使用情境 一般我們在做資料新增時會先檢查資料是否存在,都會使用下列語法 IF(SELECT * FROM table WHERE id= '1') UPDATE table SET a= a+ 1 WHERE id= '1'; ELSE INSERT 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標準語法 參考資料: MySQL官方文件