SQL Server:更新 MyTable SET col1 = 值,col2 = col1

noo*_*ber -1 t-sql sql-server-2008

我有一个表 col1 float, col2 float ,其中包含以下数据:

1,2

3,4

查询后:

UPDATE MyTable SET col1 = 100, col2 = col1
Run Code Online (Sandbox Code Playgroud)

被执行,行是:

100,1

100,3

显然,当 col2 正在更新时,会使用 col1 的旧的、未更新的值。是否可以使用新值更新 col2,引用 col1 或者我必须将值 (100) 写入两次?我想使用自动生成的查询,并且更容易保留公式。

问候,

And*_*y M 5

这是另一种尝试的替代方法:

DECLARE @x float;

UPDATE MyTable
SET
  @x = col1 = formula,
  col2 = @x * …
OPTION (MAXDOP 1)
Run Code Online (Sandbox Code Playgroud)

或者:

DECLARE @x float;

UPDATE MyTable
SET
  @x = formula,
  col1 = @x,
  col2 = @x * …
OPTION (MAXDOP 1)
Run Code Online (Sandbox Code Playgroud)

OPTION (MAXDOP 1) 是否可以确保作业评估的顺序。

  • 嗯,第一个例子被称为“古怪的更新”——我对这种语法非常谨慎。请参阅这些问题以了解潜在的问题,免责声明不能保证在未来工作等。 http://stackoverflow.com/questions/4082481/sql-2005-8-quirky-update-black-arts-question & http://stackoverflow.com/questions/6653962/ms-sql-query-update-record-retrieved-via-stored-procedure (2认同)