mysql "ON DUPLICATE KEY UPDATE" 語法

https://blog.csdn.net/bbb695480667/article/details/82800748

是實際的開發(fā)過程中,可能會遇到這樣的需求,先判斷某一記錄是否存在,如果不存在,添加記錄,如果存在,則修改數據。在INSERT語句末尾指定ON DUPLICATE KEY UPDATE可以解決這類問題。

其用法如下:如果在INSERT語句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后會導致在一個UNIQUE索引或PRIMARY KEY中出現重復值,則在出現重復值的行執(zhí)行UPDATE操作,如果不會導致唯一值重復的問題,則執(zhí)行INSERT操作。

例如:如果字段id為主鍵或擁有UNIQUE索引,并且包含值1,則以下兩條語句具有相同的效果:

INSERT INTO user (id, username, age) VALUES (1, 'jason', 88) ON DUPLICATE KEY UPDATE age = 88;
UPDATE user SET age = 88 WHERE id = 1;
如果語句被正確執(zhí)行,會返回一個影響的行數。如果行作為新記錄被插入,則受影響的行值為1,如果原有的記錄被更新,則受影響的行值為2.

如果INSERT多行記錄。

INSERT INTO user (id, username, age)
VALUE
(3, 'Alex', 18),
(3, 'Alex', 20) ON DUPLICATE KEY UPDATE age = age + 1;
字段age的值將會更改為19,因為第二條記錄與第一條重復,所以age的值被更改為19;

INSERT INTO user (id, username, age)
VALUE
(4, 'wang', 22),
(4, 'wang', 25) ON DUPLICATE KEY UPDATE age = VALUES(age);
字段age的值將會更改為25,因為第二條記錄的與第一條重復,所以age的直接取重復的值。

注意以上兩條sql語句之間的區(qū)別,第一條sql語句,當出現主鍵或索引重復時,修改第一條記錄的值,不會涉及到第二條記錄的值。第二條sql語句,當出現主鍵或索引重復時,取第二條記錄的值。
————————————————
版權聲明:本文為CSDN博主「半醉看夕陽」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權協(xié)議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/bbb695480667/article/details/82800748

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容