一尘不染

如何使用单个查询插入或更新?

sql-server

我有一个表测试,其中列 id 主键和自动递增和名称。当且仅当没有记录时,我才想插入新记录。例如

输入是 id=30122 和 name =john

如果有 id 为 30122 的记录,那么我将 name 列更新为 john,如果没有记录,那么我将插入一条新记录。

我可以使用 2 个查询,例如

select * from test where id=30122

如果它有一些记录,那么我可以使用update test set name='john' where id=3012

或者如果它没有记录,那么我可以使用

insert into test(name) values('john')

但我想使用单个查询?

有人可以告诉它是否可能吗?


阅读 91

收藏
2022-11-03

共1个答案

一尘不染

你可以试试这个

IF EXISTS(select * from test where id=30122)
   update test set name='john' where id=3012
ELSE
   insert into test(name) values('john');

其他获得更好性能的方法是

update test set name='john' where id=3012
IF @@ROWCOUNT=0
   insert into test(name) values('john');
2022-11-03