mysql存在更新不存在新增

2021-10-04 20:57:00 字數 1267 閱讀 4151

1、插入一條資料,存在則不操作,不存在就插入(必須現有唯一鍵)

使用insert ignore語句:

insert ignore into table(col1,col2) values ('a','b');
例如插入資料:

insert ignore into user_info (last_name,first_name) values ('lebron','james');
這樣一來,如果表中已經存在last_name='lebron'且first_name='james'的資料,就不會插入,如果沒有就會插入一條新資料。

上面的是一種用法,也可以用 insert .... select 來實現,這裡就不舉例了。

2、插入一條資料,存在就更新,不存在就插入(必須現有唯一鍵)

這種有兩種操作方法:

a、insert...on duplicate key update的使用 

如果指定了on duplicate key update,並且插入行後會導致在乙個unique索引或primary key**現重複值,則執行update。

例如,如果列a被定義為unique,並且包含值1,則以下兩個語句具有相同的效果: 

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

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

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

b、replace關鍵字的使用         

使用replace的最大好處就是可以將delete和insert合二為一,形成乙個原子操作。這樣就可以不必考慮在同時使用delete和insert時新增事務等複雜操作了。

在使用replace時,表中必須有唯一索引,而且這個索引所在的字段不能允許空值,否則replace就和insert完全一樣的。

在執行replace後,系統返回了所影響的行數,如果返回1,說明沒有重複的記錄,如果返回2,說明有重覆記錄,系統先delete這條記錄,然後再insert這條記錄。

語法和insert非常的相似,如下面的replace語句是插入或更新一條記錄。     

replace into users (id,name,age) values(123, '賈斯丁比伯', 22);

mysql存在就更新,不存在就新增

insert into newest log operation action,operation,key value,bus key,content,user id,version,module,create time values action,operation,keyvalue,buskey...

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

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

MYSQL存在既更新,不存在就新增 T SQL

create table tm customer sap log id bigint 36 not null auto increment comment id partner varchar 64 not null default comment 客戶編號 name org1 varchar 64...