《mysql怎樣用一條SQL實現(xiàn)有記錄則更新,沒有則添加新記錄》要點:
本文介紹了mysql怎樣用一條SQL實現(xiàn)有記錄則更新,沒有則添加新記錄,希望對您有用。如果有疑問,可以聯(lián)系我們。
相關(guān)主題:MYSQL命令
在程序開發(fā)中,經(jīng)常會有這種使用場景,就是先判斷一下數(shù)據(jù)庫中有沒有這個產(chǎn)品或內(nèi)容,如果沒有就插入新的記錄。如果有,就直接更新那一條記錄而不插入。
普通做法是連接2次數(shù)據(jù)庫,這樣效率就慢了。下面是MYSQL的做法,用一條命令完成。
表中必須包含主鍵PRIMARY或唯一unique的字段
INSERT INTO table (primarykeycol,col1,col2) VALUES (1,2,3) ON DUPLICATE KEY UPDATE col1=0, col2=col2+1
當(dāng)表中已經(jīng)存在主鍵primarykeycol值為1的記錄時,則將會更新而不會添加。
又如:
INSERT INTO `imgtoday` ( `t_memid`,`atype`, `picNum`) VALUES ( ?, ?, 1) ON DUPLICATE KEY UPDATE `picNum`= `picNum`+1';
其中`t_memid`是主鍵。如果插入時發(fā)現(xiàn)有該主鍵值的記錄時,就把后面字段PICNUM加1
要注意的事,并非要主鍵才行,只要SQL中有獨一無非的UNIQUE索引即可。比如下面一條:
INSERT INTO msgread (`mem`, `readed`) VALUES (? , ? ) ON DUPLICATE KEY UPDATE `readed`=?
這條SQL中,mem字段是UNIQUE索引,主鍵是另一個字段,它的意思是插入某個會員到表msgread,如果已經(jīng)有這個會員就直接更新readed字段值。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/111.html