我为什么看到两个语句之间的区别有点困惑。我试图简单地递增1的INT列,所以设置值1,2,3,4,等:包含多个集合的更新语句
QUERY#1产生所期望的结果:
DECLARE @a int
SET @a = 0
UPDATE #jc_TEMP
SET num = @a, @[email protected]+1
QUERY#2将所有行设置为0:
DECLARE @a int
SET @a = 0
UPDATE #jc_TEMP
SET num = @a
SET @[email protected]+1
显然我在这里错过了一些东西,但对肉眼来说它们看起来是相同的。第二个查询中的局部变量回滚是否存在?
任何特定的数据库? – GolezTrol
你的第二个查询没有'WHERE'子句,所以它会将每条记录设置为0.第一个查询在更新时也会增加'@ a'变量。 – Siyual
@Siyual - 有没有其他方法可以在不使用游标的情况下重写第一个查询?另外,为什么缺少where子句对查询#1没有问题?谢谢! – tchock