日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ON DUPLICATE KEY UPDATE 用法与说明

發布時間:2024/4/11 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ON DUPLICATE KEY UPDATE 用法与说明 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ON DUPLICATE KEY UPDATE作用

先聲明一點,ON DUPLICATE KEY UPDATE為Mysql特有語法,這是個坑
語句的作用,當insert的時候如果對應的記錄已經存在,則執行Update

用法

什么意思?舉個例子:
user_admin_t表中有一條數據如下

表中的主鍵為id,現要插入一條數據,id為‘1’,password為‘第一次插入的密碼’,一般寫法為:

INSERT INTO user_admin_t (_id,password) VALUES ('1','第一次插入的密碼')

執行后刷新表數據,我們來看表中內容

此時表中數據增加了一條主鍵’_id’為‘1’,‘password’為‘第一次插入的密碼’的記錄,當我們再次執行上述插入語句時,會發生什么呢?

[SQL]INSERT INTO user_admin_t (_id,password) VALUES ('1','第一次插入的密碼') [Err] 1062 - Duplicate entry '1' for key 'PRIMARY'

Mysql告訴我們,我們的主鍵沖突了,看到這里我們是不是可以改變一下思路,當插入已存在主鍵的記錄時,將插入操作變為修改:

– 在原sql后面增加 ON DUPLICATE KEY UPDATE

我們再一次執行:

[SQL]INSERT INTO user_admin_t (_id,password) VALUES ('1','第一次插入的密碼') ON DUPLICATE KEY UPDATE _id = 'UpId', password = 'upPassword'; 受影響的行: 2 時間: 0.131s

可以看到 受影響的行為2,這是因為將原有的記錄修改了,而不是執行插入,看一下表中數據:

原本‘id’為‘1’的記錄,改為了‘UpId’,‘password’也變為了‘upPassword’,很好的解決了重復插入問題

擴展

當插入多條數據,其中不只有表中已存在的,還有需要新插入的數據,Mysql會如何執行呢?會不會報錯呢?

其實Mysql遠比我們想象的強大,他會智能的選擇更新還是插入,我們嘗試一下:

運行sql

[SQL]INSERT INTO user_admin_t (_id,password) VALUES ('1','第一次插入的密碼') , ('2','第二條記錄') ON DUPLICATE KEY UPDATE _id = 'UpId', password = 'upPassword'; 受影響的行: 3 時間: 0.045s

Mysql執行了一次修改,一次插入,表中數據為:

VALUES修改

那么問題又來了,有人會說我ON DUPLICATE KEY UPDATE 后面跟的是固定的值,如果我想要分別給不同的記錄插入不同的值怎么辦呢?

方法之一可以將后面的修改條件改為VALUES(password),動態的傳入要修改的值,執行以下:

[SQL]INSERT INTO user_admin_t (_id,password) VALUES ('1','多條插入1') , ('UpId','多條插入2') ON DUPLICATE KEY UPDATE password = VALUES(password); 受影響的行: 4 時間: 0.187s

成功的修改了兩條記錄,刷新一下表

我們成功的為不同id的password修改成了不同的值

總結

其實修改的方法有很多種,包括SET或用REPLACE,連事務都省的做,ON DUPLICATE KEY UPDATE能夠讓我們便捷的完成重復插入的開發需求,但它是Mysql的特有語法,使用時應多注意主鍵和插入值是否是我們想要插入或修改的key、Value。

總結

以上是生活随笔為你收集整理的ON DUPLICATE KEY UPDATE 用法与说明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。