我正在尝试将一个表中的数据合并到另一个表中。
表1(表1)
ID col2 col3 col_to_update
1 s1 a1 null
2 s1 a2 null
3 s1 a2 null
4 s2 a1 null
5 s3 a1 null
6 s4 a1 null
表2(表2)
ID col2 col3 col4
10 s1 a1 v1
11 s1 a1 v2
12 s1 a2 v3
13 s2 a1 v4
14 s3 a1 v5
15 s4 a1 v6
16 s4 a1 v7
我正在尝试根据匹配col4
和Tab2
将表col_to_update
中的列Tab1
映射到表Tab1.col2 = Tab2.col2
中的列Tabl.col3 = Tab2.col3
低于预期产量:
预期产出
ID col2 col3 col4
1 s1 a1 v1
2 s1 a2 v3
3 s1 a2 v3
4 s2 a1 v4
5 s3 a1 v5
6 s4 a1 v6
我尝试使用以下查询失败:
MERGE INTO Tab1 x1
USING
(
SELECT t1.id as t1id, t2.id as t2id, t2.col2 t2col2, t2.col3 t2col3, t2.col4 from Tab2 t2
JOIN Tab1 t1 ON t2.col2 = t1.col2 AND t2.col3 = t1.col3
) x2
ON (x1.id = x2.t1id)
WHEN MATCHED THEN UPDATE SET
x1.col_to_update = x2.col4;
有没有办法获得预期的输出。
答案 0 :(得分:1)
您只想更新 tab1
:
update tab1
set col_to_update =
(
select min(tab2.col4) -- or whichever value you want to use
from tab2
where tab2.col2 = tab1.col2
and tab2.col3 = tab1.col3
);