22,209
社区成员
发帖
与我相关
我的任务
分享
DECLARE @A INT
SET @A = -1
UPDATE #t
SET
@A = CASE WHEN A IS NOT NULL THEN A ELSE @A END,
A = @A
UPDATE #t
SET
A = @A,
@A = CASE WHEN A IS NOT NULL THEN A ELSE @A END
--#1.同一个update中,变量的值优先计算
--#2.如果存在多个变量,按从上到下的顺序计算
--#3.注意SQL的'同一'原则, 就是说,在同一个SQL语句中,引用的字段值全部是未改变时的值.例:
UPDATE #t
SET @A = CASE WHEN A IS NOT NULL THEN A ELSE @A END, --#1.第一步进行
A = @A, --#3.第三步进行,会把A字段更新成'1'
@A = '1' --#2.第二步进行
B = A --#4.第四步进行. 注意:里面的字段A的值是未更新前的值,而不是#3中更新后的值。