Code Bye

条件复杂的sql更新语句问题

有三张表 分别为 会员表(member) 销售表(sale) 退货表(regoods)
会员表有字段 memberid (会员id,主键) credits(积分);
销售表有字段 memberid(会员id ,外键)  购买金额(MNAccount);
退货表中有字段memberid(会员id ,外键) 退货金额(RMNAccount);
业务说明 : 1、销售表中的销售记录可以是会员购买,也可是非会员购买。(即销售表中的memberid可以为空)
2、销售表中的一个会员可以有多条购买记录
3、退货表中的退货记录可以是会员,也可是非会员
4、一个会员可以有一条或多条退货记录
查询需求 : 分组查出销售表中全部会员购买金额,同时分组查出退货表中全部会员的退货金额,把会员id相同的购买金额-退款金额得到的结果更新到表会员表中对应会员的积分字段(credits)
解决方案

40

//修改上一条回复
update member x,
(	
	select a.memberid,(a.MNAccount - b.RMNAccount)credits from
	(select memberid,sum(MNAccount)MNAccount from sale where memberid is not null group by memberid)a
	left join
	(select memberid,sum(RMNAccount)RMNAccount from regoods where memberid is not null group by memberid)b
	on a.memberid = b.memberid
)y set x.credits = y.credits where a.memberid = y.memberid;

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明条件复杂的sql更新语句问题