update tc_customer
set cust_dec001=
(select sum(score_amount) from tc_friend_accscore_d, rel_friend_account,tc_customer
where tc_friend_accscore_d.owner_id=1
and tc_friend_accscore_d.score_amount>0 
and tc_friend_accscore_d.facc_id=rel_friend_account.facc_id
and rel_friend_account.friend_id=tc_customer.friend_id)
where owner_id=1我想把tc_friend_accscore_d表里符合条件的记录的score_amount字段进行求和,并更新tc_customer表中也符合记录的CUST_DEC001字段,我这样写不报错,但结果是,所有TC_CUSTOMER表里中的CUST_DEC001字段都变成了tc_friend_accscore_d表里score_amount字段的总和了。
各位前辈帮忙看看

解决方案 »

  1.   

    ,tc_customer  去掉试试看~~
      

  2.   

    where 后的条件少了.应该要把
    where   tc_friend_accscore_d.owner_id=1 
    and   tc_friend_accscore_d.score_amount> 0   
    and tc_friend_accscore_d.facc_id=rel_friend_account.facc_id 
    and rel_friend_account.friend_id=tc_customer.friend_id) 再写一遍,缩小范围你的update语句相当于  
    update a
    set b='b'
    where c='1'
    你就发现问题了
      

  3.   

    谢谢楼上2位
    我把它改成这样了,在SQL中可以,但在ORACLE中就不行了,NOT PROPETY END
    update tc_customer
    set cust_dec003=A.sca from
    (select tc_customer.friend_id,sum(score_amount) as sca 
    from tc_friend_accscore_d, rel_friend_account,tc_customer
    where tc_friend_accscore_d.owner_id=1
    and tc_friend_accscore_d.score_amount>0 
    and tc_friend_accscore_d.facc_id=rel_friend_account.facc_id
    and rel_friend_account.friend_id=tc_customer.friend_id
    group by tc_customer.friend_id) as A
    where owner_id=1
    and   A.friend_id=tc_customer.friend_id
      

  4.   

    什么是sql可以,oracle不可以啊?
    tc_customer可以不写的
    我只会这样写,在where之后再把条件写一遍
    update   tc_customer 
    set   cust_dec003=A.sca   from 
    (select   tc_customer.friend_id,sum(score_amount)   as   sca   
    from   tc_friend_accscore_d,   rel_friend_account
    where   tc_friend_accscore_d.owner_id=1 
    and   tc_friend_accscore_d.score_amount> 0   
    and tc_friend_accscore_d.facc_id=rel_friend_account.facc_id 
    and rel_friend_account.friend_id=tc_customer.friend_id 
    group   by   tc_customer.friend_id)   as   A 
    where   owner_id=1 and  exists(select 'Z' from   tc_friend_accscore_d,   rel_friend_account
    where   tc_friend_accscore_d.owner_id=1 
    and   tc_friend_accscore_d.score_amount> 0   
    and tc_friend_accscore_d.facc_id=rel_friend_account.facc_id 
    and rel_friend_account.friend_id=tc_customer.friend_id )
    这样改是可以的,就是不怎么好
      

  5.   

    在ORACLE里报错了呀,NOT PROPELY END