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...