是否可以检索受更新查询影响的所有主键?例如:
表:
+-------------+---------+--------+
|idx (PK, int)|FirstName|LastName|
+-------------+---------+--------+
|1 |Jane |Smith |
+-------------+---------+--------+
|2 |John |Test |
+-------------+---------+--------+
|3 |Adam |Smith |
+-------------+---------+--------+
查询:
UPDATE clients SET [LastName] = 'Smith' WHERE [FirstName] = 'John'
我想要的回报:
2
但我也希望这种方法适用于多行...例如:
查询:
UPDATE clients SET [FirstName] = 'test' WHERE [LastName] = 'Smith'
我想要的回报:
1,3
答案 0 :(得分:9)
将OUTPUT子句与表变量结合使用以更新所有 ID:
declare @insertedIds table (id int)
update
supportContacts
set
type = 'Email, updated'
output inserted.id into @insertedIds
where
type = 'Email'
select id from @insertedIds
答案 1 :(得分:1)
创建一个:
的交易答案 2 :(得分:0)
UPDATE clients SET [FirstName] = 'test' OUTPUT inserted.idx WHERE [LastName] = 'Smith'
答案 3 :(得分:0)
OUTPUT子句应该做你想要的。
UPDATE clients SET [LastName] = 'Smith' OUTPUT inserted.idx WHERE [FirstName] = 'John' ;
答案 4 :(得分:0)
似乎使用OUTPUT是要走的路。 看看这个小提琴我创造了