https://www.cnblogs.com/zjdxr-up/p/8319982.html
在實際應用中,經常碰到導入數據的功能,當導入的數據不存在時則進行添加,有修改時則進行更新,
在剛碰到的時候,第一反應是將其實現分為兩塊,分別是判斷增加,判斷更新,后來發現在mysql中有
ON DUPLICATE KEY UPDATE一步就可以完成,感覺實在是太方便了,
該語句是基於唯一索引或主鍵使用,比如一個字段a被加上了unique index,並且表中已經存在了一條記錄值為1,
下面兩個語句會有相同的效果:
INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1; UPDATE table SET c=c+1 WHERE a=1;
ON DUPLICATE KEY UPDATE后面可以放多個字段,用英文逗號分割。
再現一個例子:
INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);
表中將更改(增加或修改)兩條記錄。
