MySQL中on?duplicate?key?update的使用方法實(shí)例
mysql的存在就更新不存在就插入實(shí)現(xiàn)
先建數(shù)據(jù)庫(kù)表,重點(diǎn)要添加主鍵索引(id列,沒有測(cè)試)和唯一索引(branch_no列),隨便找表測(cè)試
INSERT INTO t_name ( c1, c2, c3 ) VALUES ( 1, '1', '1') ON DUPLICATE KEY UPDATE c2 = '2';
測(cè)試:
1、organ_no, branch_no, branch_name, created_by字段都不相同
2、branch_name, created_by不同
3、唯一索引branch_no不同
4、修改的值包括了唯一索引值branch_no
現(xiàn)在數(shù)據(jù)庫(kù)表內(nèi)容

1、執(zhí)行sql :organ_no, branch_no, branch_name, created_by字段都不相同
INSERT INTO t_bank_organ_copy1 ( organ_no, branch_no, branch_name, created_by ) VALUES ( 1, '3', '浙江分行', '3' ) ON DUPLICATE KEY UPDATE branch_name = '江蘇分行';

因?yàn)闆]有值相同,所以一定添加
2、branch_name, created_by與表中數(shù)據(jù)不同

INSERT INTO t_bank_organ_copy1 ( organ_no, branch_no, branch_name, created_by ) VALUES ( 1, '3', '海南分行', '4' ) ON DUPLICATE KEY UPDATE branch_name = '江蘇分行';

第三條數(shù)據(jù)從浙江分行改變成了江蘇分行
ON DUPLICATE KEY UPDATE 后的值是要修改的值
而這個(gè)會(huì)根據(jù)唯一索引進(jìn)行查詢,其他普通列不做匹配(主鍵也是做匹配的)
可以通過(guò)下條驗(yàn)證
3、唯一索引branch_no不同

INSERT INTO t_bank_organ_copy1 ( organ_no, branch_no, branch_name, created_by ) VALUES ( 1, '4', '江蘇分行', '3' ) ON DUPLICATE KEY UPDATE branch_name = '海南分行';
除了唯一索引branch_no不同,其他列都相同

執(zhí)行后數(shù)據(jù)庫(kù)增加一條
4、修改的值包括了唯一索引值branch_no

下面對(duì)唯一索引進(jìn)行修改嘗試
INSERT INTO t_bank_organ_copy1 ( organ_no, branch_no, branch_name, created_by ) VALUES ( 1, '4', '江蘇分行', '3' ) ON DUPLICATE KEY UPDATE branch_name = '海南分行', branch_no = '8';
修改branch_no 4為8,并修改branch_name為海南分行

可以看出對(duì)唯一索引和普通列都做了修改
總結(jié):
1、mysql的存在就更新不存在就插入可由on duplicate key update語(yǔ)法實(shí)現(xiàn);
2、不過(guò)只會(huì)檢查添加列中有沒有匹配到主鍵id和唯一索引的重復(fù)項(xiàng);
3、如果有重復(fù)項(xiàng)會(huì)在on duplicate key update后進(jìn)行修改指定的字段和內(nèi)容;
4、所涉及的唯一索引也是可以修改的;
最后也可這樣寫:
原數(shù)據(jù)庫(kù)表

INSERT INTO t_bank_organ_copy1 ( organ_no, branch_no, branch_name, created_by ) VALUES ( 1, '8', '河南分行', '3' ) ON DUPLICATE KEY UPDATE branch_name = values(branch_name);

修改成了河南分行
到此這篇關(guān)于MySQL中on duplicate key update使用方法的文章就介紹到這了,更多相關(guān)MySQL on duplicate key update使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
設(shè)置和修改MySQL的root密碼的詳細(xì)教程
在 MySQL 數(shù)據(jù)庫(kù)的使用過(guò)程中,設(shè)置和修改 root 用戶的密碼是一項(xiàng)基本且重要的操作,root 用戶擁有數(shù)據(jù)庫(kù)的最高權(quán)限,因此確保其密碼的安全性至關(guān)重要,本文將詳細(xì)介紹在不同操作系統(tǒng)環(huán)境下設(shè)置和修改 MySQL root 密碼的具體步驟,幫助你輕松掌握這一關(guān)鍵技能2025-05-05
安裝MySQL phpMyAdmin cpolar實(shí)現(xiàn)遠(yuǎn)程訪問連接的操作步驟
這篇文章主要給大家介紹了安裝 MySQL phpMyAdmin cpolar實(shí)現(xiàn)遠(yuǎn)程訪問連接的流程步驟,文中有詳細(xì)的圖文介紹,具有一定的參考價(jià)值,需要的朋友可以參考下2023-08-08
MySQL中的insert set 和 insert values用法
這篇文章主要介紹了MySQL中的insert set 和 insert values用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
使用use index優(yōu)化sql查詢的詳細(xì)介紹
本篇文章是對(duì)使用use index優(yōu)化sql查詢進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
MySQL 8.0.18 Hash Join不支持left/right join左右連接問題
在MySQL 8.0.18中,增加了Hash Join新功能,它適用于未創(chuàng)建索引的字段,做等值關(guān)聯(lián)查詢。這篇文章給大家介紹MySQL 8.0.18 Hash Join不支持left/right join左右連接,感興趣的朋友一起看看吧2019-11-11
Mysql?InnoDB?B+樹索引目錄項(xiàng)記錄頁(yè)管理
這篇文章主要為大家介紹了Mysql?InnoDB?B+樹索引目錄項(xiàng)記錄頁(yè)管理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
Mysql數(shù)據(jù)庫(kù)實(shí)現(xiàn)多字段過(guò)濾的方法
這篇文章主要介紹了Mysql數(shù)據(jù)庫(kù)實(shí)現(xiàn)多字段過(guò)濾的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-07-07
SQL實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)檢索數(shù)據(jù)的直接轉(zhuǎn)換計(jì)算
這篇文章主要介紹了SQL實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)檢索數(shù)據(jù)的直接轉(zhuǎn)換計(jì)算,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09
MySQL合并查詢結(jié)果的實(shí)現(xiàn)
本文主要介紹了MySQL合并查詢結(jié)果的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03

