1. 程式人生 > >mysql有資料就更新,沒資料就插入

mysql有資料就更新,沒資料就插入

原文連結:sql插入資料已經存在,則執行update更新-mysql教程-資料庫-壹聚教程網
http://www.111cn.net/database/mysql/76509.htm

在很多專案中,我們需要對資料進行不斷的呼叫和更新,如果有新的資料過來,還要把它加入到資料庫中。其中非常重要的一種情況就是,我們不知道傳過來的資料是不是原本資料庫中就已經有了的記錄,所以我們常常需要先通過抓取資料,判斷是否存在,如果存在執行update,如果不存在執行insert,這樣就要進行兩次資料庫操作,第一次是查詢,第二次是更新或插入,有沒有一種方法可以只需要執行一次操作即可呢?答案是有的。

INSERT ... ON DUPLICATE KEY UPDATE 方法可以幫助我們非常好的解決這一問題。讓我們來看一個例子:

INSERT INTO table (a,b,c) VALUES (1,2,3)  ON DUPLICATE KEY UPDATE b=b-1,c=c+1;

這一個語句就可以實現,在插入(1,2,3)這條記錄的時候,檢查是否存在a=1,如果有a=1的記錄,那麼更新a=1這條記錄,相當於執行了一次下面這個語句:

UPDATE table SET b=b-1,c=c+1 WHERE a=1;

如果資料庫中不存在a=1這條記錄,那麼就插入新的記錄。

使用INSERT ... ON DUPLICATE KEY UPDATE的前提是,a欄位被設定為“唯一鍵”索引,否則該方法是無效的。