相关疑难解决方法(0)

基于另一个更新的列更新列

我的问题与单个更新语句中的更新顺序有关。我观察到,当我使用SELECT语句设置变量时,变量是按顺序设置的。例如:

SELECT
    @Test1 = 2,
    @Test2 = @Test1 + 1
Run Code Online (Sandbox Code Playgroud)

此时@Test1将会2并且@Test2将会是3因为设置操作是按顺序完成的。但是会发生什么UPDATE

UPDATE TestTable SET
    Test1 = 2,
    Test2 = Test1 + 1
Run Code Online (Sandbox Code Playgroud)

在计算中会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
    ;
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server sql-server-2008

3
推荐指数
1
解决办法
1340
查看次数

标签 统计

sql-server ×1

sql-server-2008 ×1

t-sql ×1