【发布时间】:2010-11-02 21:59:11
【问题描述】:
大家好,所有 SQL Server Blackbelt 大师。
我有一个简单的问题需要解决。我正在尝试在桌子上做一些古怪的更新。表的具体结构并不重要,我的问题基本上可以归结为以下问题:
update SalesTotal
set @total = total = @total + sales,
@flag = flag = case when @flag = 1 then 0
when @total > x then 1
else 0 end
问题是我可以相信@total 变量会有一个新值,即。将在第二个集合部分之前执行,或者它将包含一个“旧”值(来自先前的分配),或者它是未定义的。我正在研究这个问题一段时间,但找不到解决方案,这对我的更新非常重要(我想一次性更新一张表)。我要更新的值之一取决于另一个值(在同一行中),因此它在单个更新中工作的唯一方法是它是否有效。
希望你能帮助我
【问题讨论】:
-
能否提供更新前后的表格和变量?
-
上面回答的 Jeff Moden 写了我见过的关于这个主题的最好的文章。 sqlservercentral.com/articles/T-SQL/68467 答案是肯定的。但必须满足某些条件。阅读文章。
标签: sql sql-server tsql sql-update