使用连接表列的总和值更新mysql表列?

时间:2014-04-22 02:57:42

标签: mysql

订单表

Id
OrderDate
Total

项目表

Id
Price
Quantity
OrderId (fkey -> order.Id)

订单有很多项目。

在mysql SQL中,有没有办法更新order.total,以便它是每个项目的产品item.priceitem.quantity的总和?

那是 -

orders.each:
   order.items.each:
      sum += item.price * item.quantity;
   order.total = sum;

我可以为此编写一个简单的脚本,但我想学习如何在SQL中执行此操作。

1 个答案:

答案 0 :(得分:2)

是。您可以使用update / join执行此操作。您需要汇总items以获取总数,然后将结果重新加入orders以进行更新:

update orders o join
       (select i.orderid, sum(i.price * i.quantity) as total
        from items i
        group by i.orderid
       ) oi
       on o.orderid = oi.orderid
    set o.total = oi.total;