转自:http://hi.baidu.com/tidy0608/item/ff930fe2436f2601560f1dd9
sqlsever数据存在就更新,不存在就插入的两种方法
两种经常使用的方法:
1. Update, if @@ROWCOUNT = 0 then insert
UPDATETable1 SETColumn1 = @newValue WHEREId = @id
IF@@ROWCOUNT= 0
BEGIN
INSERT INTOTable1 (Id, Column1) VALUES(@id, @newValue)
END
如果一行数据存在更新就有效,否则插入将被执行.个人感觉这种方法倾向于数据多半存在于数据表中的情况;
2. If row exists update, otherwise insert
IFEXISTS(SELECT* FROMTable1 WHEREId = @id)
BEGIN
UPDATETable1 SETColumn1 = @newValue WHEREId = @id
END
ELSE
BEGIN
INSERT INTOTable1 (Id, Column1) VALUES(@id, @newValue)
END
在这种方法,select语句执行后紧接着就是执行update或是insert,消耗资源是少与方法一的.
3.mysql数据存在就更新,不存在就插入
insert into T(f1,f2,f3) values(v1,v2,v3) on DUPLICATE KEY UPDATE v3=values(v3)+v3