【发布时间】:2016-02-19 10:46:46
【问题描述】:
我正在尝试更新具有多列的表(Table1)..
id Engine Transmission Exhaust Axle
-- ------- ------- -------- ------
1 CC NX1 BP1 F1
2 C1 NX2 BP2 F2
3 C2 NX3 BP3 F3
我想使用 Table2 中的名称和值更新此表...
id Name Value
-- ------- -------
1 Engine C4
2 Transmission NX4
3 Exhaust BP5
4 Axle F4
仅基于 ID 即可轻松连接这两个表。但是是否可以使用 Table2.Name 使用 Table2.Value 来“动态地”更新 Table1 中的列。一些如何使用 Table2.Name 来知道 Table1 中的哪一列将被 Table2.Value 更新?
到目前为止,我只能想到一个基本的 SELECT 来根据 WHERE EXISTS 提取我正在寻找的数据:
SELECT * FROM table1 t1
Where exists (Select NULL
from scpomgr.table2 t2
WHERE t1.id = t2.id);
结果将是 table1:
id Engine Transmission Exhaust Axle
-- ------- ------- -------- ------
1 C4 NX1 BP1 F1
2 C1 NX4 BP2 F2
3 C2 NX3 BP5 F3
4 C3 NX5 BP4 F4
【问题讨论】:
-
你能告诉我们你到目前为止做了什么吗?您确定我们可以按 ID 列连接两个表吗?
-
那么更新的结果会是什么?
-
我不认为它是带有内部联接的更新语句的副本。作为此查询,您需要更新 Table1。 Engine、Table1.Transmission、Table1.Exhaust 和 Table1.Axle:基于 Table2.Name 中的名称。