请教各位大哥。有两个表,表a(id,字段a),表b(id,字段b)
表a中字段a,表b中字段b都是数字型表a的id和表b的id有对应关系,现在想把表b中的字段b加到表a的字段a中,id相同就相加到a表中。
想打到的效果是:
表a:
id 字段a
1 12
2 13
3 11
4 14
表b:
id 字段b
1 12
2 13
3 11
更新后表a为:
表a:
id 字段a
1 24
2 26
3 22
4 14
我是新手,请各位高手帮忙,写这样一个sql,另外对于500w数量级的数据做这样的操作,需要多长时间。谢谢各位大哥。
表a中字段a,表b中字段b都是数字型表a的id和表b的id有对应关系,现在想把表b中的字段b加到表a的字段a中,id相同就相加到a表中。
想打到的效果是:
表a:
id 字段a
1 12
2 13
3 11
4 14
表b:
id 字段b
1 12
2 13
3 11
更新后表a为:
表a:
id 字段a
1 24
2 26
3 22
4 14
我是新手,请各位高手帮忙,写这样一个sql,另外对于500w数量级的数据做这样的操作,需要多长时间。谢谢各位大哥。
将A表rename成C表,然后用C表,和B表生成A表,后再建索引;
将B中有的id数据,A表中没有的id数据合并在一起;1: alter table A rename to C;
2: create table A
as
select C.id id, C.字段a+nvl(B.字段b, 0) 字段a
from C, B where c.id=b.id(+)
union all
select B.id id, B.字段b 字段a
from B,(select id from B minus
select id from A) X
where b.id=x.id;
3:创建A表的索引。
set a = a + (select b from b where a.id=b.id)
where a.id in (select id from b);
不过这个过程要注意更新异常的处理。我也在学习中。
如果只是单独的做表更新,而且空间够大,可以做张新表的。
CREATE ... AS 一下