得用游标。
对A表建游标,然后每一项分别执行下面的语句:update Table_a set fieldb=fieldb+(select sum(FieldB) from table_b where fielda=Table_A.fielda ) where fielda=每一项的值。
对A表建游标,然后每一项分别执行下面的语句:update Table_a set fieldb=fieldb+(select sum(FieldB) from table_b where fielda=Table_A.fielda ) where fielda=每一项的值。
解决方案 »
- 请帮忙看下这个存储过程哪边出问题了
- 这两sql语句怎么合并?
- SQL 2005 用户架构删除问题,在线等等中!急
- 问一个我认为似乎有难度的问题!!主要是关于数据恢复的问题
- 工作了10多个小时,找点东西乐一下吧!笑死不赔命哦 !
- 如何提高查询效率
- 请教:sql2000 视图,在程序中调用时使用group by 不能通过?
- ACCESS如何能快速减肥?或者能不让它文件任意增加和当删除一个表或一个表中的数据后,文件能够减小?
- MS-SQL里的表中每行有个行ID,是怎么写的,怎么用?
- 用企业管理器会造成数据库日志出现大量的账户登陆失败审核,怎么解决?
- 请问用什么方法快速把几个结构相同的表联起来(Union太慢了)
- oracle8i的OEM问题
一句话就可以:
update table_a set fieldb = fieldb + (select sum(fieldB) bsun from table_b
where fieldA = table_a.fieldA group by fieldA)不过在使用的时候必须保证table_a.fieldA不重复。
From Table_A A, (Select FieldA, Sum(FieldB) As FieldB_Sum From Table_B Group by FieldA) B
Where A.FieldA=B.FieldA
from (select b.field_a as a,sum(b.field_b) as b_sum from table_b as b group by b.field_a) as c
where table_a.field=c.a
我看:
update table_a set fieldb = fieldb + (select sum(fieldB) from table_b
where fieldA = table_a.fieldA )
足矣!
A.
update table_a set fieldb = fieldb + (select sum(fieldB) from table_b
where fieldA = table_a.fieldA )
B.
Update Table_A set FieldB=FieldB+B.FieldB_Sum
From Table_A A, (Select FieldA, Sum(FieldB) As FieldB_Sum From Table_B Group by FieldA) B
Where A.FieldA=B.FieldA 这2种以A为简单,速度也比较快(Table_B表一定要有fieldA的索引)。B仅适合在Table_A表记录数很少,且Table_B表较大的情况,因为它对Table_B表只进行一次扫描。
select FieldA,sum(FieldB) as FieldB into Table_A from Table_B
group by FieldA
这样OK.