繁体   English   中英

更新包含多个集合的语句

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM