如果 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;
我有两个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;