《mysql怎樣用一條SQL實現(xiàn)有記錄則更新,沒有則添加新記錄》要點:
本文介紹了mysql怎樣用一條SQL實現(xiàn)有記錄則更新,沒有則添加新記錄,希望對您有用。如果有疑問,可以聯(lián)系我們。
相關主題:MYSQL命令
在程序開發(fā)中,經常會有這種使用場景,就是先判斷一下數(shù)據庫中有沒有這個產品或內容,如果沒有就插入新的記錄。如果有,就直接更新那一條記錄而不插入。
普通做法是連接2次數(shù)據庫,這樣效率就慢了。下面是MYSQL的做法,用一條命令完成。
表中必須包含主鍵PRIMARY或唯一unique的字段
INSERT INTO table (primarykeycol,col1,col2) VALUES (1,2,3) ON DUPLICATE KEY UPDATE col1=0, col2=col2+1
當表中已經存在主鍵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,如果已經有這個會員就直接更新readed字段值。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/111.html