好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

解决Oracle批量修改问题

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

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 ):

?

1

2

3

4

5

6

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批量修改问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!

原文链接:http://blog.csdn.net/qq_31845675/article/details/77163567

查看更多关于解决Oracle批量修改问题的详细内容...

  阅读:25次