我有一个表测试,其中列 id 主键和自动递增和名称。当且仅当没有记录时,我才想插入新记录。例如
输入是 id=30122 和 name =john
如果有 id 为 30122 的记录,那么我将 name 列更新为 john,如果没有记录,那么我将插入一条新记录。
我可以使用 2 个查询,例如
select * from test where id=30122
如果它有一些记录,那么我可以使用update test set name='john' where id=3012
update test set name='john' where id=3012
或者如果它没有记录,那么我可以使用
insert into test(name) values('john')
但我想使用单个查询?
有人可以告诉它是否可能吗?
你可以试试这个
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');