update a set money=(select sum(b.money) from b where b.kind=a.kind)
where exists(select 1 from b where b.kind=a.kind);

解决方案 »

  1.   

    update a set money=(select sum(b.money) from b where b.kind=a.kind)
    where exists(select 1 from b where b.kind=a.kind);
    谢谢!可我想问exists(select 1 from b where b.kind=a.kind);中select 1 什么意思?难道写一个语句只能更新A表中的一个记录么,谢谢!
      

  2.   

    select 1只是一种写法,确认有记录就行.
      

  3.   

    不是,
    exists(select 1 from b where b.kind=a.kind);
    这个是防止对于在b中没有对应数据的行业执行update操作,
    select 1 ... 因为是exists语句,只要找到存在符合条件的纪录 就返回true,随便使用一个就可以
    select * from ...;select 'a' from ...都行。
      

  4.   

    update a set money=(select sum(b.money) from b where  b.kind=a.kind(+))
      

  5.   

    Update a set money = (select money from (select kind ,sum(money) from b group by kind) b
                          where b.kind = a.kind)
    绝对可以.
      

  6.   

    可以。
    exists(select 1 from b where b.kind=a.kind);
    就是只要存在一条,该条件就成立了。
    也必需存在一条,该条件才成立。