我有以下简单示例来说明这个问题:
select * into #table from (values (1),(2)) t(i)
;with t as (
select *, ROW_NUMBER() over (order by i) rn
from #table
)
update t
set i = i * 10
output deleted.i, deleted.rn, inserted.i
where rn = 2
正如预期的那样,UPDATE 正确地将 2 更新为 20。但是,OUTPUT 显示
i | rn | i
---+----+---
2 | 1 | 20
rn
显示 1 而不是 2。对此有什么解释吗?有没有解决方案可以在输出中输出正确的 rn,以便我可以将正确的值插入表中以保留更改结果。
谢谢。