我的问题与单个更新语句中的更新顺序有关。我观察到,当我使用SELECT
语句设置变量时,变量是按顺序设置的。例如:
SELECT
@Test1 = 2,
@Test2 = @Test1 + 1
此时@Test1
将是2
并且@Test2
将是3
因为集合操作是按顺序完成的。但是会发生什么UPDATE
?
UPDATE TestTable SET
Test1 = 2,
Test2 = Test1 + 1
Test2
是在计算中使用初始值Test1
还是使用我们刚刚设置的值?如果它是 aUPDATE
内的语句,它有什么区别MERGE
吗?
MERGE INTO TestTable AS T
USING (
SELECT
Test1,
Test2
FROM SomeOtherTable
) AS S
ON S.Test1 = T.Test1
WHEN MATCHED THEN
UPDATE SET
T.Test1 = 2,
T.Test2 = T.Test1 + 1
;