仅在不同的情况下从另一个表更新值

时间:2015-10-26 20:55:51

标签: sql sql-update union

我有2个表,A和B,都有ID和Value。 (使用SQL Server)

A:

         ID VALUE
=========== ==========
          1 A
          2 A
          2 D

B:

         ID VALUE
=========== ==========
          1 C
          2 D

更新后,我希望A看起来像:

A:

         ID VALUE
=========== ==========
          1 C
          2 D
          2 D

我希望查询仅在值不等于时更新。例如,2将更新为D但只更新一次。影响总共2行。

目前我的查询是:

UPDATE A
SET A.Value= A.Value
FROM B
WHERE A.ID= B.ID

当值不等于时,是否只有更新?

我想只更新不相等的行的原因是跟踪修改的内容。

感谢。

1 个答案:

答案 0 :(得分:1)

认为这应该对你有用

UPDATE A
SET A.Value = B.Value
FROM B
WHERE A.ID = B.ID AND A.Value <> B.Value

示例https://data.stackexchange.com/stackoverflow/query/edit/380722#resultSets