mysql插入重復數據的處理(DUPLICATE、IGNORE、REPLACE)
mysql插入重復數據的三種處理方式
1、插入或者更新 DUPLICATE
“INSERT ... ON DUPLICATE KEY UPDATE ”,
它是在插入操作時,如果數據出現重復,則更新重復數據的值。
示例:
INSERT INTO myf_deal_data ( `ID`, `PTNAME`, `PTDATA`, `OPERTIME`, `REPORTTIME` )
VALUES
( 111, '858_Ua', '219.1000', '2022-04-01 00:45:00', '2022-06-28 10:04:52' )
ON DUPLICATE KEY UPDATE PTDATA = '219.9000',REPORTTIME = NOW()示例解釋:
這條語句意味著,如果myf_deal_data表,存在id為111的數據,那么就將更新PTDATA 和REPORTTIME 的值
需要權限:insert、update
影響行數:2行
注意:多線程并發(fā)會導致死鎖的可能。
2、插入或者丟棄 IGNORE
“ INSERT IGNORE INTO .. VALUES ”的用法
是在插入操作時,如果數據出現重復,則忽略這個操作,不會報錯,但也不會插入重復的數據。
示例:
INSERT IGNORE INTO myf_deal_data ( `ID`, `PTNAME`, `PTDATA`, `OPERTIME`, `REPORTTIME` ) VALUES ? ? ( 111, '858_Ua', '219.1000', '2022-04-01 00:45:00', '2022-06-28 10:04:52' )?
示例解釋:
向myf_deal_data 表插入數據,如果myf_deal_data 表的主鍵字段( ID 字段)已經存在 111這個值,那么這條語句就會被忽略,不會插入數據,也不會報錯。
需要權限:insert
影響行數:0行
3、插入或者替換 REPLACE
“ REPLACE INTO ... VALUES ”的用法
是在插入操作時,如果不存在插入數據,如果數據出現重復,則更新數據(與DUPLICATE不同,需要的是insert、delete權限,是先刪除后新增)。
示例:
REPLACE INTO ?myf_deal_data ( `ID`, `PTNAME`, `PTDATA`, `OPERTIME`, `REPORTTIME` ) VALUES ? ? ( 58261907, '858_Ua', '219.1000', '2022-04-01 00:45:00', '2022-06-28 10:04:52' )?
示例解釋:
向myf_deal_data 表插入數據,如果myf_deal_data 表的主鍵字段( ID 字段)已經存在 111這個值,那么這條語句就會被忽略,不會插入數據,也不會報錯。
需要權限:insert、delete
影響行數:2行 (先刪除,再新增)
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
解決Win7 x64安裝解壓版mysql 5.7.18 winx64出現服務無法啟動問題
這篇文章主要介紹了解決Win7 x64安裝解壓版mysql 5.7.18 winx64出現服務無法啟動問題,需要的朋友可以參考下2017-05-05
MySQL Index Condition Pushdown(ICP)性能優(yōu)化方法實例
這篇文章主要介紹了MySQL Index Condition Pushdown(ICP)性能優(yōu)化方法實例,本文講解了概念介紹、原理、實踐案例、案例分析、ICP的使用限制等內容,需要的朋友可以參考下2015-05-05
在Windows系統(tǒng)上使用壓縮歸檔文件安裝MySQL的步驟
這篇文章主要介紹了在Windows系統(tǒng)上使用壓縮歸檔文件安裝MySQL的步驟,非常不錯,具有一定的參考借鑒加載,需要的朋友可以參考下2018-06-06
MySQL Community Server壓縮包安裝配置方法
這篇文章主要為大家詳細介紹了MySQL Community Server壓縮包安裝配置方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-11-11

