代码之家  ›  专栏  ›  技术社区  ›  user2316154

SQL Server是否支持在同一语句中使用列值更新另一列以及更新第一列?

  •  0
  • user2316154  · 技术社区  · 2 年前

    例如:

    UPDATE Table1 SET Column1 = Column2, Column2 = Column3
    

    这是否保证总是会导致这样的更新:

    之前:

    第1列 第2列 第3列
    10 200 3000

    之后:

    第1列 第2列 第3列
    200 3000 3000

    一个快速的实验表明它是有效的,但我在MSDN上找不到任何明确表明它会有效的东西。

    1 回复  |  直到 2 年前
        1
  •  1
  •   Dan Guzman    2 年前

    是的,结果会如所愿。SQL Server将更新作为基于集合的操作执行,因此更新在逻辑上同时发生。甚至可以颠倒列顺序以获得相同的结果:

    UPDATE Table1 SET Column1 = Column2, Column2 = Column3;
    UPDATE Table1 SET Column2 = Column3, Column1 = Column2;