我有類似的查詢:TSQL - 如何防止優化這個查詢
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
我不是特別在意性能,這是在幾排
我看到你發佈了一個工程,你也可以顯示你正在嘗試工作的一個? –
這是不可能的。這將是一個錯誤,如果是的話。 SQL Server會爲[萬聖節保護](http://blogs.msdn.com/b/craigfr/archive/2008/02/27/halloween-protection.aspx)的計劃添加適當的操作符,以防止您想要的行爲。 –
@DennisJaheruddin什麼?最上面的查詢就是我想要做的工作。第二個以前在不同情況下工作 –