欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

解决Oracle批量修改问题

程序员文章站 2022-06-25 12:28:42
问题:根据唯一字段编码修改其它字段,修改部分数据,数量在上万条数据,数据大,一开始就卡死了!笨办法,一条一条修改不知可年可月啊。其他方法个人原因实在是无能为力。如下:...

问题:根据唯一字段编码修改其它字段,修改部分数据,数量在上万条数据,数据大,一开始就卡死了!笨办法,一条一条修改不知可年可月啊。其他方法个人原因实在是无能为力。如下:

update ka02_new set aka065=1,aka166=1 where aka060='x-p02ca-a010-a001-2v';
update ka02_new set aka065=1,aka166=1 where aka060='x-p02ca-a010-a001-2w';
update ka02_new set aka065=1,aka166=1 where aka060='x-p02ca-a010-a001-2x';
update ka02_new set aka065=1,aka166=1 where aka060='x-p02ca-a010-a001-2y';
update ka02_new set aka065=1,aka166=1 where aka060='x-p02ca-a010-a001-2z';
update ka02_new set aka065=1,aka166=1 where aka060='x-p02ca-a010-a001-31';
update ka02_new set aka065=1,aka166=1 where aka060='x-p02ca-a010-a001-32';
update ka02_new set aka065=1,aka166=1 where aka060='x-p02ca-a010-a001-33';
update ka02_new set aka065=1,aka166=1 where aka060='x-p02ca-a010-a001-34';
update ka02_new set aka065=1,aka166=1 where aka060='x-p02ca-a010-a001-35';
update ka02_new set aka065=1,aka166=1 where aka060='x-p02ca-a010-a001-36';
update ka02_new set aka065=1,aka166=1 where aka060='x-p02ca-a010-a001-37';
update ka02_new set aka065=1,aka166=1 where aka060='x-p02ca-a010-a001-38';
update ka02_new set aka065=1,aka166=1 where aka060='x-p02ca-a010-a001-39';
update ka02_new set aka065=1,aka166=1 where aka060='x-p02ca-a010-a001-3a';
update ka02_new set aka065=1,aka166=1 where aka060='x-p02ca-a010-a001-3b';
update ka02_new set aka065=1,aka166=1 where aka060='x-p02ca-a010-a001-3c';
update ka02_new set aka065=1,aka166=1 where aka060='x-p02ca-a010-a001-3d';
update ka02_new set aka065=1,aka166=1 where aka060='x-p02ca-a010-a001-3e';
update ka02_new set aka065=1,aka166=1 where aka060='x-p02ca-a010-a001-3f';
update ka02_new set aka065=1,aka166=1 where aka060='x-p02ca-a010-a001-3g';
update ka02_new set aka065=1,aka166=1 where aka060='x-p02ca-a010-a001-3h';
update ka02_new set aka065=1,aka166=1 where aka060='x-p02ca-a010-a001-3i';
update ka02_new set aka065=1,aka166=1 where aka060='x-p02ca-a010-a001-3j';
update ka02_new set aka065=1,aka166=1 where aka060='x-p02ca-a010-a001-3k';
update ka02_new set aka065=1,aka166=1 where aka060='x-p02ca-a010-a001-3l';
update ka02_new set aka065=1,aka166=1 where aka060='x-p02ca-a010-a001-3m';
update ka02_new set aka065=1,aka166=1 where aka060='x-p02ca-a010-a001-3n';
update ka02_new set aka065=1,aka166=1 where aka060='x-p02ca-a010-a001-3o';
....

百度结果:百度了一下,很多解决方案,有的写的很粗糙,完全不理解,也许自己水平问题。有的是自己真的看不懂,个人水平跟不上。

解决方案:最后的解决办法,还是老办法,就是新建一张临时表(表b:a_2017 ),把所修改的唯一字段编码和修改后的数据放在b表。sql大体如下(原表a:ka02_new ,唯一字段aka060 ,修改的字段分别为aka065 和aka166 ):

update ka02_new b
  set b.aka065 =
    (select a.aka065 from a_2017 a where a.aka060 = b.aka060),
    b.aka166 =
    (select a.aka166 from a_2017 a where a.aka060 = b.aka060)
 where b.aka060 in (select a.aka060 from a_2017 a);

总结

以上所述是小编给大家介绍的解决oracle批量修改问题,希望对大家有所帮助