詳解MySql如何不插入重復(fù)數(shù)據(jù)
向數(shù)據(jù)庫的插入值時,需要判斷插入是否重復(fù),然后插入。
這種操作怎么提高效率
下面說說一些解決方案
1、insert ignore into
當插入數(shù)據(jù)時,如出現(xiàn)錯誤時,如重復(fù)數(shù)據(jù),將不返回錯誤,只以警告形式返回。所以使用ignore請確保語句本身沒有問題,否則也會被忽略掉。例如:
INSERT IGNORE INTO USER ( NAME ) VALUES ( '張三' );
這種方法很簡單,但是有一種可能插入不是因為重復(fù)數(shù)據(jù)報錯,而是因為其他原因報錯的,也同樣被忽略了~
2、on duplicate key update
當primary 或者 unique重復(fù)時,則執(zhí)行update語句;
當update后為無用語句,如:id=id,錯誤不會被忽略。
INSERT INTO USER ( NAME ) VALUES ( '張三' ) ON DUPLICATE KEY UPDATE id = id;
這種方法有個前提條件,就是需要約束條件,即,主鍵或者唯一約束。
3、insert ... select ... where not exist
根據(jù)select的條件判斷是否插入
INSERT INTO USER ( NAME ) SELECT '張三' FROM DUAL WHERE NOT EXISTS (SELECT id FROM USER WHERE id = 1)
這種方法其實就是使用mysql的一個臨時表的方式,但是里面使用子查詢,效率會有影響,能不使用盡量避免。
4、replace into
如果存在 primary 或者 unique 相同的記錄,則先刪除再插入新記錄。
REPLACE INTO USER SELECT 1, '張三' FROM USER
這種方法就是不管原來有沒有相同的記錄,都會先刪除再插入。
到此這篇關(guān)于詳解MySql如何不插入重復(fù)數(shù)據(jù)的文章就介紹到這了,更多相關(guān)MySql不插入重復(fù)數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql中Update未加索引導(dǎo)致的微服務(wù)模塊不可用
本文主要介紹了mysql中Update未加索引導(dǎo)致的微服務(wù)模塊不可用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06Mysql數(shù)據(jù)庫之常用sql語句進階與總結(jié)
這篇文章主要介紹了Mysql數(shù)據(jù)庫之常用sql語句,總結(jié)分析了MySQL數(shù)據(jù)庫常用的查詢、條件查詢、排序、連接查詢、子查詢等相關(guān)操作技巧,需要的朋友可以參考下2019-11-11