慕森王
您可以使用MERGE单个语句有条件地从数据库中插入或检索行。不幸的是,要获得检索操作,我们必须触及现有行,我假设这是可以接受的,并且您将能够构建一个影响较小的“No-Op” UPDATE,如下所示:create table T (ID int not null primary key, Col1 varchar(3) not null)insert into T(ID,Col1) values (1,'abc');merge T tusing (values (1,'def')) s(ID,Col1)on t.ID = s.IDwhen matched then update set Col1 = t.Col1when not matched then insert (ID,Col1) values (s.ID,s.Col1)output inserted.*,$action;这会产生:ID Col1 $action----------- ---- ----------1 abc UPDATE包括该$action列可以帮助您知道这是一个现有的行而不是insert成功的行(1,def)。