在很多專案中,我們需要對資料進行不斷的呼叫和更新,如果有新的資料過來,還要把它加入到資料庫中。其中非常重要的一種情況就是,我們不知道傳過來的資料是不是原本資料庫中就已經有了的記錄,所以我們常常需要先通過抓取資料,判斷是否存在,如果存在執行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欄位被設定為「唯一鍵」索引,否則該方法是無效的。
MySQL新增資料,存在就更新,不存在就新增上
一 插入一條資料,存在就更新,不存在就插入 必須現有唯一鍵 replace關鍵字的使用 使用replace的最大好處就是可以將delete和insert合二為一,形成乙個原子操作。1 這樣就可以不必考慮在同時使用delete和insert時新增事務等複雜操作了。2 在使用replace時,表中必須有...
MySQL新增資料,存在就更新,不存在就新增
1.insert ignore insert ignore into table col1,col2 values a b 例如插入資料 insert ignore into user info last name,first name values lebron james 這樣一來,如果表中已經...
不存在 MySQL資料存在就更新,不存在就新增
做業務系統,經常遇到初始化一些資料,但如果每次都檢查就比較麻煩,下面的方法可以解決類似的問題。使用on duplicate插入的字段中必須有唯一約束,否則會出現重複值 目前表中沒有唯一約束,執行兩遍插入語句,會出現兩個重複資料,id為49的jerry和id為50的jerry,並沒有達到修改的目的,將...