问题
表格1:
| KeyColumn | DataColumn1 | DataColumn2|
01 0.1 0.2
02 0.13 0.41
表 2:
| anotherKey | DataColumn1 | DataColumn2|
A1 .15 1.2
A2 .25 23.1
表3:
|KeyColumn| anotherKey |
01 A1
02 A1
给定一个键(A1 或 A2),我需要使用表 2 中的相应值更新表 1 中的 DataColumn1 和 DataColumn2 列。
所以 table1 可以更新 x 行,如上面的数据所示。如果我想更新 A1,01 和 02 行都应该更新
(因此对于键 01 和 02,对于 datacolumn1,table1 中的值是 0.15,对于 datacolumn2 是 1.2)
到目前为止我已经尝试过:
MERGE table1
USING (SELECT *
FROM table2
LEFT OUTER JOIN table3
on table2.anotherKey = table3.anotherKey
WHERE table2.anotherKey = 'A1') tmpTable
ON
table1.keyColumn = tmpTable.keyColumn
WHEN MATCHED THEN
UPDATE
SET table1.DataColumn1 = tmpTable.DataColumn1
,table1.DataColumn2 = tmpTable.DataColumn2;
问题:
- 这是允许的吗?在using语句中使用select?我在第 1 行遇到语法错误
- 有没有更好的方法来解决这个问题?我是否让这变得比它必须的更复杂?
- 我究竟做错了什么?
和错误:
消息 102,级别 15,状态 1,第 1 行 'a' 附近的语法不正确。消息 102,级别 15,状态 1,第 12 行 'd' 附近的语法不正确。