mysql 存在update不存在insert

2021-09-23 01:29:05 字數 886 閱讀 4683

如果在insert語句末尾指定了on duplicate key update,並且插入行後會導致在乙個unique索引或primary key**現重複值,則在出現重複值的行執行update;如果不會導致唯一值列重複的問題,則插入新行。

例如,如果列 a 為 主鍵 或 擁有unique索引,並且包含值1,則以下兩個語句具有相同的效果:

insert into test(a,c) values (1,3) on duplicate key update c=c+1;

update table set c=c+1 where a=1;

如果行作為新記錄被插入,則受影響行的值顯示1;如果原有的記錄被更新,則受影響行的值顯示2。

這個語法還可以這樣用:

如果insert多行記錄(假設 a 為主鍵或 a 是乙個 unique索引列):

insert into test(a,c) values (1,3),(1,7) on duplicate key update c=c+1;

執行後, c 的值會變為 4 (第二條與第一條重複, c 在原值上+1).

insert into test(a,c) values (1,3),(1,7) on duplicate key update c=values(c);

執行後, c 的值會變為 7 (第二條與第一條重複, c 在直接取重複的值7).

注意:on duplicate key update只是mysql的特有語法,並不是sql標準語法!

這個語法和適合用在需要 判斷記錄是否存在,不存在則插入存在則更新的場景.

注意:資料量過大的表,請不要使用該語法

可以參考語法:

mysql不存在insert,存在update

replace into rap order values 4,112,21,a01011101 234 在執行replace後,系統返回了所影響的行數,如果返回1,說明在表中並沒有重複的記錄,如果返回2,說明有一條重覆記錄,系統自動先呼叫了 delete刪除這條記錄,然後再記錄用insert來in...

mysql存在更新不存在新增

1 插入一條資料,存在則不操作,不存在就插入 必須現有唯一鍵 使用insert ignore語句 insert ignore into table col1,col2 values a b 例如插入資料 insert ignore into user info last name,first nam...

不存在 MySQL資料存在就更新,不存在就新增

做業務系統,經常遇到初始化一些資料,但如果每次都檢查就比較麻煩,下面的方法可以解決類似的問題。使用on duplicate插入的字段中必須有唯一約束,否則會出現重複值 目前表中沒有唯一約束,執行兩遍插入語句,會出現兩個重複資料,id為49的jerry和id為50的jerry,並沒有達到修改的目的,將...