【MySQL】MySQL插入相同數(shù)據(jù)后的處理(更新或忽略)

在實(shí)際的業(yè)務(wù)場(chǎng)景中,經(jīng)常會(huì)遇到這樣的需求:插入某條記錄,但如果數(shù)據(jù)庫(kù)中有這條記錄的話那就作相應(yīng)的處理(忽略或者更新),正常情況下需要程序分多個(gè)步驟去完成這樣的需求,在MySQL中提供了兩種方式去簡(jiǎn)化這個(gè)操作,那就是使用insert...on duplicate key update、replace into和insert ignore into

目錄

  • 一、insert...on duplicate key update的使用
  • 二、replace into的使用
  • 三、insert ignore into的使用

一、insert...on duplicate key update的使用

1、首先需要在判斷條件上加上唯一索引,這個(gè)索引最好是單個(gè)字段的(比如是ID)
2、使用例子

INSERT INTO tb_addrbook(ID,name,mobile) VALUE('1001','小李','13112345678') ON DUPLICATE KEY UPDATE name= '小李',mobile='13112345678'

解釋:
在on duplicate key update后面,name和mobile字段是需要更新的內(nèi)容,語(yǔ)句總體的意思是插入一條ID為1001的數(shù)據(jù),名稱是小李,電話是13112345678,如果數(shù)據(jù)表中有一條數(shù)據(jù)的ID是1001,那么將原來(lái)的name和mobile分別改為小李和13112345678(直接更新數(shù)據(jù))

二、replace into的使用

1、使用方式同上,首先還是要有作為唯一判斷的條件,并在這個(gè)字段上加上唯一索引,索引最好是單個(gè)字段的
2、使用例子:

REPLACE INTO tb_addrbook(ID,name,mobile) VALUE('1001','小李','13112345678')

解釋:
replace into的使用方式更直接粗暴,而且更容易懂,因?yàn)檎Z(yǔ)法跟insert into是一樣的,只是insert改成了replace,其工作原理是會(huì)將原來(lái)的1001的數(shù)據(jù)刪除,然后再插入新添加的數(shù)據(jù)(先刪除后插入),需要注意的是,如果ID是自動(dòng)遞增的,唯一判斷條件是另外一個(gè)自動(dòng),那么更新之后,自增ID是會(huì)變的(比如原來(lái)ID是1,那么執(zhí)行完replace into后ID就是2了)

三、insert ignore into的使用

1、使用方式同上,首先還是要有作為唯一判斷的條件,并在這個(gè)字段上加上唯一索引,索引最好是單個(gè)字段的
2、使用例子:

INSERT IGNORE INTO tb_addrbook(ID,name,mobile) VALUE('1001','小李','13112345678')

解釋:
INSERT IGNORE INTO的使用方式也跟insert into一樣,只是在判斷到有相同的數(shù)據(jù)之后直接跳過(guò),不更新也不刪除插入,如上面語(yǔ)句的意思就是如果插入到的表中有1001這條數(shù)據(jù)的話,那么就直接跳過(guò),不作任何操作

有關(guān)on dunplicate key update 會(huì)出現(xiàn)的鎖問(wèn)題:
https://blog.csdn.net/pml18710973036/article/details/78452688

參考:
https://blog.csdn.net/dazhi_100/article/details/50133757

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

相關(guān)閱讀更多精彩內(nèi)容

  • ORACLE自學(xué)教程 --create tabletestone ( id number, --序號(hào)usernam...
    落葉寂聊閱讀 1,257評(píng)論 0 0
  • wyun_guest需要添加的地方 1: oauth_clients需要添加一條記錄image.png INSER...
    EddieZhang閱讀 801評(píng)論 0 0
  • mysql在存在主鍵沖突或者唯一鍵沖突的情況下,根據(jù)插入策略不同,一般有以下三種避免方法。1、insert ign...
    詩(shī)圓閱讀 6,565評(píng)論 3 7
  • 本文主要總結(jié)了工作中一些常用的操作及不合理的操作,在對(duì)慢查詢進(jìn)行優(yōu)化時(shí)收集的一些有用的資料和信息,本文適合有MyS...
    Chting閱讀 687評(píng)論 0 1
  • 一條長(zhǎng)長(zhǎng)的身影,把我拖進(jìn)了黃昏 一棵石榴樹(shù),迎風(fēng)而立, 每一次的搖曳,都像極了母親的手 枝頭的果實(shí),尚未成年, 就...
    關(guān)月樓閱讀 517評(píng)論 7 21

友情鏈接更多精彩內(nèi)容