场景:
我有两个单独的表(表 1 和表 2) 我想用表 2 中的列值更新表 1 中的列
案例1:
在更新发生之前,我需要表 1 中的 b、c 和 d 列匹配表 2 中的 b、c 和 d
案例2:
表 1 中的列 b 具有真值,但表 2 中的列 b 引用查找(表 1 中的示例,列 b 的值可能为蓝色,但在表 2 中,列 b 的值为 14567,这是引用蓝色的查找表中的 id)
您将如何完成此更新?
将表 ta 创建为 选择1个ID,"亚历克斯"姓名,27岁从双 联盟 选择2个ID,"鲍勃"名字,32岁从双;
将表 TB 创建为 选择1个ID,"亚历克斯"姓名,29岁从双 联盟 选择5个ID,"迪克"名字,24岁从双;
更新 TA A 设置 a.age = (从 TB b 中选择 b.age,其中 a.id=b.id 和 b.name=a.name) 存在的位置(从 TB 中选择 1,其中 a.id=tb.id 和 a.name = tb.name);
假设表lookup
有列b
(对应于t2.b
)和col_x
列(对应于t1.b
),你可以使用merge
语句做这样的事情:
merge into t1
using (
select t2.a, l.col_x, t2.c, t2.d
from t2 join lookup l on t2.b = l.b
) s
on (t1.b = s.col_x and t1.c = t2.c and t1.d = t2.d)
when matched then update
set t1.a = s.a
;