【Oracle】【8】大批量update某个字段
正文:
需实现:将A表的某个字段的值复制到B表中
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。我们一般会这样写:UPDATE B SET B.NAME = (SELECT A.NAME FROM A WHERE A.NO = B.NO)
出现的问题是:
1,B表中A.NO = B.NO匹配不上的数据行,NAME字段会被清空;
例:A表{[NO1,NAME_A_1]},B表{[NO1,NAME_B_1], [NO2,NAME_B_2]},执行该语句后,B表数据会变成{[NO1,NAME_A_1], [NO2,null]}
2,效率较低,执行时间很长
解决方案:
1,加限制条件,更新的列只能是匹配得上的
UPDATE B SET B.NAME = (SELECT A.NAME FROM A WHERE A.NO = B.NO) WHERE B.NO IN (SELECT A.NO FROM A)
2,merge into
--注意顺序 MERGE IN TO B USING A ON (A.NO = B.NO) WHEN MATCHED THEN UPDATE SET B.NAME = A.NAME
参考博客:
1,oracle数据库大批量update操作记录 - shenxian1021的专栏 - CSDN博客
https://blog.csdn.net/shenxian1021/article/details/79269042

更多精彩