我对mysql中的UPDATE有疑问。
我有一个客户表,其链接到 customer_orders 表。 customer表具有 customer_balance 字段。 customer_orders表具有 order_cost字段。 我想运行每月查询以将order_cost字段中的金额添加到customer_balance字段。
我尝试过使用UPDATE和SET,但这只适用于客户有一个订单的情况。任何额外的order_cost金额都不会被添加。
关于如何做到这一点的任何想法都非常感激。
答案 0 :(得分:2)
您希望在执行update
之前进行汇总。像这样:
update customer c join
(select customerid, sum(order_cost) as sumoc
from customer_orders co
group by customerid
) co
on c.customerid = co.customerid
set c.customer_balance = c.customber_balance + co.sumoc;
答案 1 :(得分:0)
为什么要在数据一致性方面承担这样的风险
select customerid, sum(order_cost) as sumoc
from customer_orders co
group by customerid
这将为您提供始终实时的一致数据。
如果您遇到性能问题,请考虑在custumer_orders表上触发(插入后)触发器,每次插入订单时都会更新客户余额