如何在mysql数据库中两次更新相同的字段

时间:2014-09-15 15:14:16

标签: mysql sql

我对mysql中的UPDATE有疑问。

我有一个客户表,其链接到 customer_orders 表。 customer表具有 customer_balance 字段。 customer_orders表具有 order_cost字段。 我想运行每月查询以将order_cost字段中的金额添加到customer_balance字段。

我尝试过使用UPDATE和SET,但这只适用于客户有一个订单的情况。任何额外的order_cost金额都不会被添加。

关于如何做到这一点的任何想法都非常感激。

2 个答案:

答案 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表上触发(插入后)触发器,每次插入订单时都会更新客户余额