A表
user       mny
001        100
002         20B表user        SumMNY
001         10
002         0
003         0用一条update语句完成A表的数据更新B表的数据
完成结果如下B表
user        SumMNY
001          110
002           20
003           0

解决方案 »

  1.   

    update b set SumMNY=SumMNY+(select mny from a where a.user=b.user)
      

  2.   

    update 表b set SumMNY=a.SumMNY+b.SumMNY from 表a a,表b b where b.user=a.user
      

  3.   

    楼上的 oracle可以这样写吗
      

  4.   

    SQL> set serveroutput on
    SQL> select * from eric3
      2  /     USERS        MNY
    ---------- ----------
             1        100
             2         20SQL> select * from eric4
      2  /     USERS     SUMMNY
    ---------- ----------
             3          0
             2          0
             1         10SQL> update eric4 b set SumMNY=nvl(SumMNY+(select mny from eric3 a where a.users=b.users), 0)
      2  /3 rows updated.SQL> select * from eric4
      2  /     USERS     SUMMNY
    ---------- ----------
             3          0
             2         20
             1        110SQL>
      

  5.   

    update b set SumMNY=SumMNY+(select nvl(sum(mny),0) from a where a.user=b.user group by user)
      

  6.   

    update b set SumMNY=SumMNY+(select nvl(sum(mny),0) from a where a.user=b.user group by user) where exists(select '' from b,a where a.user=b.user)
      

  7.   

    抱错:单行子查询返回多个行
    可能是因为b中的user与a中的user是一对多关系update b set summny = nvl(summny + (select nvl(sum(mny),0) from a where user=b.user group by user),summny)
      

  8.   

    Eric_1999差点被你害死 update eric4 b set SumMNY=nvl(SumMNY+(select mny from eric3 a where a.users=b.users), 0)我会死的很参的
     update eric4 b set SumMNY=SumMNY+nvl((select mny from eric3 a where a.users=b.users), 0)才对,到现在心还跳的厉害呢