king

sql mysql和sqlserver存在就更新,不存在就插入的写法(转)

king Oracle 2023-02-26 812浏览 0

 

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

继续浏览有关 数据库技术文章/教程 的文章
发表评论