> 技术文档 > oracle 数据库批量变更数据 将a表字段批量更新为b表字段

oracle 数据库批量变更数据 将a表字段批量更新为b表字段

需求:将excel表中的数据批量更新到 taccoinfo表中vc_broker字段

0、备份:

create table taccoinfo0724  as  select vc_custno ,vc_broker from taccoinfo  

1、创建临时表:
create table taccoinfo0724_1 as  select vc_custno ,vc_broker from taccoinfo 
WHERE  1=2 
将附近列表信息导入taccoinfo0724_1临时表(如果数据不对,可以在最前列插入一空列,直接复制到表里面)

2、再次检查更新内容是否正确

SELECT 
    t1.vc_custno, 
    t1.vc_broker AS 原经纪人, 
    t2.vc_broker AS 待更新经纪人
FROM taccoinfo t1
JOIN taccoinfo0724_1 t2 ON t1.vc_custno = t2.vc_custno;

3、执行更新语句

MERGE INTO taccoinfo t1
USING taccoinfo0724_1 t2
ON (t1.vc_custno = t2.vc_custno)
WHEN MATCHED THEN
    UPDATE SET t1.vc_broker = t2.vc_broker;

说明

  • MERGE INTO taccoinfo t1:指定要进行操作(更新)的目标表为 taccoinfo,并给它一个别名 t1
  • USING taccoinfo0724_1 t2:指定用于比较和获取数据的源表为 taccoinfo0724_1,并给它一个别名 t2
  • ON (t1.vc_custno = t2.vc_custno):设置连接条件,即当两个表中的 vc_custno 字段值相等时,进行后续操作。
  • WHEN MATCHED THEN UPDATE SET t1.vc_broker = t2.vc_broker:当满足 ON 条件时(即两表中有匹配的记录),执行更新操作,将目标表 t1 中的 vc_broker 字段值更新为源表 t2 中对应的 vc_broker 字段值。