如果 ID 存在于另一个 table 中,则使用另一个 table 中的值更新列

Update column with values from another table if ID exists in another table

我有两个table,

表 1:

+----+-------+
| ID | Value |
+----+-------+
| 1  |   A   |
| 2  |   B   |
| 3  |   C   |
| 4  |   D   |
+----+-------+

表 2:

+----+-------+
| ID | Value |
+----+-------+
| 3  |   E   |
| 4  |   F   |
+----+-------+

表 1 更新后

+----+-------+
| ID | Value |
+----+-------+
| 1  |   A   |
| 2  |   B   |
| 3  |   E   |
| 4  |   F   |
+----+-------+

我想更新 table 1 中所有 'Value' 列,其中在 table 2 中有匹配的 ID,并保留其余没有匹配的值table 2 中的 ID 保持不变,如上例所示。

基本如下:

UPDATE Table1
SET Value = (SELECT Value FROM Table2 
             WHERE Table1.[ID] = Table2.[ID])

除此之外,表 1 中的所有值都为 NULL,而表 2 中不存在。我希望它保持不变。

我在轻松使用

之前已经完成了这个
UPDATE

有一个

CASE WHEN

但我记不清具体是什么了。

使用 INNER JOIN 而不是子查询。这将隐式过滤到仅找到相关行的行:

UPDATE T1
SET [Value] = T2.Value
FROM dbo.Table1 T1
     JOIN dbo.Table2 T2 ON T1.ID = T2.ID;

db<>fiddle