久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL中怎么不插入重復數據

165次閱讀
沒有評論

共計 1408 個字符,預計需要花費 4 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

這期內容當中丸趣 TV 小編將會給大家帶來有關 MySQL 中怎么不插入重復數據,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

1、insert ignore into

當插入數據時,如出現錯誤時,如重復數據,將不返回錯誤,只以警告形式返回。所以使用 ignore 請確保語句本身沒有問題,否則也會被忽略掉。例如:

INSERT IGNORE INTO user (name) VALUES (telami)

  這種方法很簡便,但是有一種可能,就是插入不是因為重復數據報錯,而是因為其他原因報錯的,也同樣被忽略了~

2、on duplicate key update

當 primary 或者 unique 重復時,則執行 update 語句,如 update 后為無用語句,如 id=id,則同 1 功能相同,但錯誤不會被忽略掉。

例如,為了實現 name 重復的數據插入不報錯,可使用一下語句:

INSERT INTO user (name) VALUES (telami) ON duplicate KEY UPDATE idid = id

這種方法有個前提條件,就是,需要插入的約束,需要是主鍵或者唯一約束(在你的業務中那個要作為唯一的判斷就將那個字段設置為唯一約束也就是 unique key)。

3、insert hellip; select hellip; where not exist

根據 select 的條件判斷是否插入,可以不光通過 primary 和 unique 來判斷,也可通過其它條件。例如:

INSERT INTO user (name) SELECT  telami  FROM dual WHERE NOT EXISTS (SELECT id FROM user WHERE id = 1)

這種方法其實就是使用了 mysql 的一個臨時表的方式,但是里面使用到了子查詢,效率也會有一點點影響,如果能使用上面的就不使用這個。

4、replace into

如果存在 primary or unique 相同的記錄,則先刪除掉。再插入新記錄。

REPLACE INTO user SELECT 1, telami FROM books

這種方法就是不管原來有沒有相同的記錄,都會先刪除掉然后再插入。另外,關注公眾號 Java 技術棧,在后臺回復:面試,可以獲取我整理的 MySQL 面試題和答案。

實踐

選擇的是第二種方式

insert id= batchSaveUser  parameterType= list  insert into user (id,username,mobile_number) values  foreach collection= list  item= item  index= index  separator= ,  ( #{item.id}, #{item.username}, #{item.mobileNumber} )  /foreach  ON duplicate KEY UPDATE idid = id  /insert

這里用的是 Mybatis,批量插入的一個操作,mobile_number 已經加了唯一約束。這樣在批量插入時,如果存在手機號相同的話,是不會再插入了的。

上述就是丸趣 TV 小編為大家分享的 MySQL 中怎么不插入重復數據了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注丸趣 TV 行業資訊頻道。

向 AI 問一下細節

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-04發表,共計1408字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 白河县| 方城县| 石屏县| 安龙县| 伊宁市| 南溪县| 山丹县| 南岸区| 岑溪市| 安阳县| 河北省| 九台市| 陇西县| 开封县| 兰坪| 贵港市| 扎兰屯市| 韩城市| 辽阳县| 从江县| 孝义市| 绥芬河市| 聂拉木县| 双鸭山市| 庆云县| 安顺市| 工布江达县| 大方县| 和硕县| 区。| 黔南| 宣化县| 新源县| 壤塘县| 卓尼县| 陆河县| 天长市| 黔西| 桂东县| 诏安县| 伊宁市|