有两张表1.卡表
  1)卡号
  2)积分2.消费表
  1)卡号
  2)消费金额消费表里的卡号可能是有多条重复的(多次消费)我想写一个sql语句把消费金额累加后(多条的情况下,一条就不用累加了)
加到卡表里的积分中谢谢各位,解决就给分

解决方案 »

  1.   

    update 卡表 a inner join (select 卡号,sum(消费金额) as sum消费金额 from 消费表 group by 卡号) b on a.卡号=b.卡号
    set a.积分=a.积分+b.sum消费金额
      

  2.   

    或者
    update 卡表
    set 积分=积分+(select sum(消费金额) from 消费表 where 卡号=卡表.卡号)
      

  3.   


    这种写法有错的,若卡表中有的记录而在对应消费表里没有对应记录的话,则会将卡表中原来有的数据更新为null的,请注意!!!
      

  4.   

    改成这样就可以了:update 卡表
    set 积分=积分+(select sum(消费金额) from 消费表 where 卡号=卡表.卡号)
     where exists (select 1 from  消费表 where 卡号=卡表.卡号)
      

  5.   


    如果消费表没有对应消费记录可以默认消费金额为0 
    ifnull(消费金额,0)