订单表
Id
OrderDate
Total
项目表
Id
Price
Quantity
OrderId (fkey -> order.Id)
订单有很多项目。
在mysql SQL中,有没有办法更新order.total
,以便它是每个项目的产品item.price
和item.quantity
的总和?
那是 -
orders.each:
order.items.each:
sum += item.price * item.quantity;
order.total = sum;
我可以为此编写一个简单的脚本,但我想学习如何在SQL中执行此操作。
答案 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;