新聞中心
更新操作是使用數(shù)據(jù)庫(kù)最常見的操作之一,下面將為您詳細(xì)介紹MYSQL中無(wú)重復(fù)插入數(shù)據(jù)更新語(yǔ)法,供您參考,希望對(duì)您學(xué)習(xí)數(shù)據(jù)更新能有所幫助。

創(chuàng)新互聯(lián)成立10多年來(lái),這條路我們正越走越好,積累了技術(shù)與客戶資源,形成了良好的口碑。為客戶提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)、空間域名、網(wǎng)絡(luò)營(yíng)銷、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。網(wǎng)站是否美觀、功能強(qiáng)大、用戶體驗(yàn)好、性價(jià)比高、打開快等等,這些對(duì)于網(wǎng)站建設(shè)都非常重要,創(chuàng)新互聯(lián)通過(guò)對(duì)建站技術(shù)性的掌握、對(duì)創(chuàng)意設(shè)計(jì)的研究為客戶提供一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進(jìn)步。
如果你指定了ON DUPLICATE KEY UPDATE命令語(yǔ)句,那么在***索引或者主索引的作用下將不插入與數(shù)據(jù)庫(kù)記錄重復(fù)的內(nèi)容,但同時(shí)會(huì)更新數(shù)據(jù)庫(kù)中的舊記錄。例如,字段a被聲明為***索引并且里面只包含有值為1的記錄,以下兩個(gè)語(yǔ)句會(huì)達(dá)到同樣的效果:
一、INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;
二、UPDATE table SET c=c+1 WHERE a=1;
受影響的是a=1的行,當(dāng)插入時(shí)c的值加1。
如果字段b也是***的話,這個(gè)插入語(yǔ)句將和以下語(yǔ)句的效果一樣:
UPDATE table SET c=c+1 WHERE a=1 OR b=2 LIMIT 1;
如果a=1 OR b=2匹配了不止一行,也只是***行被更新。一般地,如果表中有多個(gè)***索引的話,你應(yīng)該避免在使用用ON DUPLICATE KEY子句。
你可以在插入更新語(yǔ)句 INSERT ... UPDATE 中使用 VALUES(字段名) 函數(shù)去關(guān)聯(lián)某一行記錄。也就是說(shuō), VALUES(字段名) 可以用在UPDATE語(yǔ)句中去更新某字段的值而不會(huì)出現(xiàn)重復(fù)鍵。這個(gè)函數(shù)在多行插入中尤其有用。但是函數(shù) VALUES() 僅當(dāng)用在 INSERT ... UPDATE 語(yǔ)句中才有意義,否則會(huì)返回NULL。例如:
INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);
這個(gè)語(yǔ)句和下面兩個(gè)是同效果的:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=3;
INSERT INTO table (a,b,c) VALUES (4,5,6)
ON DUPLICATE KEY UPDATE c=9;
如果表中包含有一個(gè)自動(dòng)遞增字段AUTO_INCREMENT,并用 INSERT ... UPDATE 插入一行,函數(shù) LAST_INSERT_ID()會(huì)返回AUTO_INCREMENT的值,如果這個(gè)語(yǔ)句更新某一行, LAST_INSERT_ID() 就沒(méi)有意義了。但是,你可以通過(guò)用 LAST_INSERT_ID(expr)使它變得有意義,假如id字段是自動(dòng)遞增欄的話,使 LAST_INSERT_ID() 對(duì)更新語(yǔ)句有意義的方法如下:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3;
如果你使用 ON DUPLICATE KEY UPDATE 語(yǔ)句的話,延遲執(zhí)行選項(xiàng) DELAYED 將被忽略。
【編輯推薦】
SQL中兩個(gè)關(guān)聯(lián)表批量更新數(shù)據(jù)的方法
數(shù)據(jù)更新監(jiān)控CDC介紹
SQL函數(shù)取得系統(tǒng)日期
sql函數(shù)遍歷BOM表的方法
判斷閏年的SQL函數(shù)
文章標(biāo)題:詳解MYSQL中無(wú)重復(fù)插入數(shù)據(jù)更新語(yǔ)法
當(dāng)前網(wǎng)址:http://m.fisionsoft.com.cn/article/cdhsohg.html


咨詢
建站咨詢
