更新语句,其中一列依赖于另一个更新列

时间:2016-06-27 18:54:49

标签: tsql

我想更新表中的两列,其中一列取决于另一个更新列的计算。计算相当复杂,所以我不想每次重复,我只想使用新更新的值。

CREATE TABLE test (
    A int,
    B int,
    C int,
    D int
)

INSERT INTO test VALUES (0, 0, 5, 10)

UPDATE test
    SET 
        B = C*D * 100,
        A = B / 100

所以我的问题是,这甚至可以在一个查询中将50作为A列的值吗? 另一个选择是使用持久计算列,但是当我依赖于另一个计算列时它会工作吗?

1 个答案:

答案 0 :(得分:2)

您无法在单个查询中实现您的目标。这是由于名为 All At Once Operations 的概念转换为"在SQL Server中,出现在Same中的操作逻辑阶段同时进行评估。" ..

以下操作不会产生您期望的结果

insert into table1
(t1,t1+100,t1+200)-- sql wont use new t1 incremented value 

同样适用于更新

  update t1
   set t1=t1*100
       t2=t1   --sql wont use t1 updated value(*100)

<强>参考文献:
TSQL Querying by Itzik Ben-Gan