[英]Update statements containing multiple sets
我对为什么看到两个语句之间的差异感到有些困惑。 我试图简单地将INT列增加1,因此将值设置为1、2、3、4等:
QUERY#1产生期望的结果:
DECLARE @a int
SET @a = 0
UPDATE #jc_TEMP
SET num = @a, @a=@a+1
QUERY#2将所有行设置为0:
DECLARE @a int
SET @a = 0
UPDATE #jc_TEMP
SET num = @a
SET @a=@a+1
显然我在这里遗漏了一些东西,但是肉眼看来它们是相同的。 本地变量是否会在第二个查询中回滚?
因为第二个“ UPDATE”实际上是两个单独的语句 :
1 - DECLARE @a int
2 - SET @a = 0
3 - UPDATE #jc_TEMP
SET num = @a
4 - SET @a=@a+1
UPDATE
将所有行设置为@a
的值(为0),然后下一条语句将@a
递增。
您的第一个UPDATE
:
1 - DECLARE @a int
2 - SET @a = 0
3 - UPDATE #jc_TEMP
SET num = @a,
@a=@a+1
每行增加@a
的值,因此您会看到数据的增加。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.