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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL 处理插入重主键唯一键重复值办法

發布時間:2025/3/15 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL 处理插入重主键唯一键重复值办法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本篇文章主要介紹在插入數據到表中遇到鍵重復避免插入重復值的處理方法,主要涉及到IGNORE,ON DUPLICATE KEY UPDATE,REPLACE;接下來就分別看看這三種方式的處理辦法。

?

IGNORE

?

當使用INSERT語句向表中添加一些行數據并且在處理期間發生錯誤時,INSERT語句將被中止,并返回錯誤消息。因此,可能不會向表中沒有插入任何行。

使用ignore當插入的值遇到主鍵(PRIMARY KEY)或者唯一鍵(UNIQUE KEY)重復時自動忽略重復的記錄行,不影響后面的記錄行的插入,

使用INSERT INGORE語句,則會忽略導致錯誤的行,并將其余行插入到表中。

創建測試表

CREATE TABLE Tignore (ID INT NOT NULL PRIMARY KEY , NAME1 INT )default charset=utf8;

正常的插入如果插入的記錄中存在鍵重復會報錯,整個語句都會執行失敗

使用IGNORE如果插入的記錄中存在重復值會忽略重復值的該記錄行,不影響其它行的插入。

REPLACE

使用replace當插入的記錄遇到主鍵或者唯一鍵重復時先刪除表中重復的記錄行再插入。

REPLACE INTO Treplace() VALUES(1,1),(1,2),(2,2);

創建測試表

DROP TABLE IF EXISTS Treplace; CREATE TABLE Treplace (ID INT NOT NULL PRIMARY KEY , NAME1 INT )default charset=utf8;

?從輸出的信息可以看到是4行受影響,說明它是先插入了(1,1)然后又刪除了(1,1)

ON DUPLICATE KEY UPDATE

當插入的記錄遇到主鍵或者唯一鍵重復時,會執行后面定義的UPDATE操作。

相當于先執行Insert 操作,再根據主鍵或者唯一鍵執行update操作。

創建測試表

DROP TABLE IF EXISTS Tupdate; CREATE TABLE Tupdate (ID INT NOT NULL PRIMARY KEY , NAME1 INT UNIQUE KEY )default charset=utf8; INSERT INTO Tupdate() VALUES(1,1),(1,2) ON DUPLICATE KEY UPDATE NAME1=NAME1+1; INSERT INTO Tupdate() VALUES(1,1),(1,2) ON DUPLICATE KEY UPDATE NAME1=VALUES(NAME1)+1;

第一條語句相當于執行:

INSERT INTO Tupdate() VALUES(1,1) UPDATE Tupdate SET NAME1=NAME1+1 WHERE ID=1;

第二條語句相當于執行:

INSERT INTO Tupdate() VALUES(1,1) UPDATE Tupdate SET NAME1=2+1 WHERE ID=1;

在ON DUPLICATE KEY UPDATE后面使用VALUES指的就是插入的記錄的值,而不使用VALUES指的是表的自身值。

?

注意:?ON DUPLICATE KEY UPDATE的后面執行的UPDATE更新的記錄是WHERE重復的主鍵或者唯一鍵的ID,這點非常重要。

比如下面這種情況:

INSERT INTO Tupdate() VALUES(1,1),(2,1) ON DUPLICATE KEY UPDATE NAME1=VALUES(ID)+1;

它是唯一鍵NAME1重復但是主鍵不重復,執行的語句是這樣的:

INSERT INTO Tupdate() VALUES(1,1) UPDATE Tupdate SET NAME1=2+1 WHERE ID=1;

不要認為會插入主鍵ID=2的記錄進去。

?

總結

?上面的三種處理重復值的方法都支持標準的INSERT語法,包括INSERT INTO...VALUES, INSERT INTO ....SET ,INSERT INTO..... SELECT。

轉載自https://www.cnblogs.com/chenmh/p/5392540.html

?

總結

以上是生活随笔為你收集整理的MySQL 处理插入重主键唯一键重复值办法的全部內容,希望文章能夠幫你解決所遇到的問題。

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