這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)MySQL中怎么不插入重復(fù)數(shù)據(jù),文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
10年積累的成都網(wǎng)站設(shè)計、網(wǎng)站制作經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有易縣免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
當(dāng)插入數(shù)據(jù)時,如出現(xiàn)錯誤時,如重復(fù)數(shù)據(jù),將不返回錯誤,只以警告形式返回。所以使用ignore請確保語句本身沒有問題,否則也會被忽略掉。例如:
INSERT IGNORE INTO user (name) VALUES ('telami')
這種方法很簡便,但是有一種可能,就是插入不是因?yàn)橹貜?fù)數(shù)據(jù)報錯,而是因?yàn)槠渌驁箦e的,也同樣被忽略了~
當(dāng)primary或者unique重復(fù)時,則執(zhí)行update語句,如update后為無用語句,如id=id,則同1功能相同,但錯誤不會被忽略掉。
例如,為了實(shí)現(xiàn)name重復(fù)的數(shù)據(jù)插入不報錯,可使用一下語句:
INSERT INTO user (name) VALUES ('telami') ON duplicate KEY UPDATE idid = id
這種方法有個前提條件,就是,需要插入的約束,需要是主鍵或者唯一約束(在你的業(yè)務(wù)中那個要作為唯一的判斷就將那個字段設(shè)置為唯一約束也就是unique key)。
根據(jù)select的條件判斷是否插入,可以不光通過primary 和unique來判斷,也可通過其它條件。例如:
INSERT INTO user (name) SELECT 'telami' FROM dual WHERE NOT EXISTS (SELECT id FROM user WHERE id = 1)
這種方法其實(shí)就是使用了mysql的一個臨時表的方式,但是里面使用到了子查詢,效率也會有一點(diǎn)點(diǎn)影響,如果能使用上面的就不使用這個。
如果存在primary or unique相同的記錄,則先刪除掉。再插入新記錄。
REPLACE INTO user SELECT 1, 'telami' FROM books
這種方法就是不管原來有沒有相同的記錄,都會先刪除掉然后再插入。另外,關(guān)注公眾號Java技術(shù)棧,在后臺回復(fù):面試,可以獲取我整理的 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已經(jīng)加了唯一約束。這樣在批量插入時,如果存在手機(jī)號相同的話,是不會再插入了的。
上述就是小編為大家分享的MySQL中怎么不插入重復(fù)數(shù)據(jù)了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
分享文章:MySQL中怎么不插入重復(fù)數(shù)據(jù)
文章位置:http://aaarwkj.com/article40/pesieo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、關(guān)鍵詞優(yōu)化、商城網(wǎng)站、網(wǎng)站排名、網(wǎng)站策劃、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)