mysql插入重復(fù)數(shù)據(jù)的處理(DUPLICATE、IGNORE、REPLACE)
mysql插入重復(fù)數(shù)據(jù)的三種處理方式
1、插入或者更新 DUPLICATE
“INSERT ... ON DUPLICATE KEY UPDATE ”,
它是在插入操作時,如果數(shù)據(jù)出現(xiàn)重復(fù),則更新重復(fù)數(shù)據(jù)的值。
示例:
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的數(shù)據(jù),那么就將更新PTDATA 和REPORTTIME 的值
需要權(quán)限:insert、update
影響行數(shù):2行
注意:多線程并發(fā)會導(dǎo)致死鎖的可能。
2、插入或者丟棄 IGNORE
“ INSERT IGNORE INTO .. VALUES ”的用法
是在插入操作時,如果數(shù)據(jù)出現(xiàn)重復(fù),則忽略這個操作,不會報錯,但也不會插入重復(fù)的數(shù)據(jù)。
示例:
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 表插入數(shù)據(jù),如果myf_deal_data 表的主鍵字段( ID 字段)已經(jīng)存在 111這個值,那么這條語句就會被忽略,不會插入數(shù)據(jù),也不會報錯。
需要權(quán)限:insert
影響行數(shù):0行
3、插入或者替換 REPLACE
“ REPLACE INTO ... VALUES ”的用法
是在插入操作時,如果不存在插入數(shù)據(jù),如果數(shù)據(jù)出現(xiàn)重復(fù),則更新數(shù)據(jù)(與DUPLICATE不同,需要的是insert、delete權(quán)限,是先刪除后新增)。
示例:
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 表插入數(shù)據(jù),如果myf_deal_data 表的主鍵字段( ID 字段)已經(jīng)存在 111這個值,那么這條語句就會被忽略,不會插入數(shù)據(jù),也不會報錯。
需要權(quán)限:insert、delete
影響行數(shù):2行 (先刪除,再新增)
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL將時間戳轉(zhuǎn)換為年月日格式的實現(xiàn)
在我們的項目開發(fā)過程中,經(jīng)常需要將時間戳或日期時間字段轉(zhuǎn)換為特定的格式,本文主要介紹了MySQL將時間戳轉(zhuǎn)換為年月日格式的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2024-08-08
區(qū)分MySQL中的空值(null)和空字符('''')
這篇文章主要介紹了如何區(qū)分MySQL中的空值(null)和空字符(''),幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下2020-09-09
探究MySQL中索引和提交頻率對InnoDB表寫入速度的影響
這篇文章主要介紹了MySQL中索引和提交頻率對InnoDB表寫入速度的影響,作者通過實際測試運行時間的對比來驗證,需要的朋友可以參考下2015-05-05
MySQL學(xué)習(xí)筆記5:修改表(alter table)
我們在創(chuàng)建表的過程中難免會考慮不周,因此后期會修改表修改表需要用到alter table修改表語句,接下來詳細介紹,需要的朋友可以參考下2013-01-01
如何將Excel中的數(shù)據(jù)導(dǎo)入到MySQL
本文介紹三種將Excel數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫的方法:使用數(shù)據(jù)庫工具(如DBeaver)、SQL轉(zhuǎn)換CSV導(dǎo)入、及腳本代碼處理,涵蓋格式轉(zhuǎn)換、字段映射及工具兼容性注意事項2025-08-08
MYSQL必知必會讀書筆記第七章之?dāng)?shù)據(jù)過濾
這篇文章主要介紹了MYSQL必知必會讀書筆記第七章之?dāng)?shù)據(jù)過濾的相關(guān)資料,需要的朋友可以參考下2016-05-05

