我有一个类似于以下的查询:
update x
set x.y = (
select sum(x2.y)
from mytable x2
where x2.y < x.y
)
from mytable x
关键是,我正在遍历行并基于对那些正在更改的字段的子查询更新字段。
我看到的是在发生任何更新之前正在为每一行执行子查询,因此不会获取每行的更改值。
如何强制为更新的每一行重新评估子查询?
是否有合适的表格提示或其他内容?
顺便说一句,我正在执行以下操作并且确实有效,但是由于稍微修改了我的查询(出于逻辑目的,而不是尝试解决此问题),此技巧不再有效:(
declare @temp int
update x
set @temp = (
select sum(x2.y)
from mytable x2
where x2.y < x.y
),
x.y = @temp
from mytable x
我不是特别关心性能,这是一个运行几行的后台任务