我有一张销售表和一张订单表。
在sales表中,多个行具有相同的订单ID。
我需要通过添加销售表金额来更新订单表金额吗? 订单表ID与销售表订单ID匹配的位置?
销售表
ID | amount | order_id |
----------------------------
1 | 100 | 1 |
2 | 100 | 1 |
3 | 300 | 2 |
4 | 500 | 2 |
订单表
ID | amount
---------------------
1 | 0.00
2 | 0.00
订单结果:
ID | amount
---------------------
1 | 200.00
2 | 800.00
答案 0 :(得分:0)
您可以将update
与join
和子查询一起使用:
update orders o
join (select order_id, sum(amount) amount
from sales
group by order_id) s on o.id = s.order_id
set o.amount = s.amount
答案 1 :(得分:0)
如果该过程只执行一次,您可以执行TRUNCATE并插入所有数据。
TRUNCATE TABLE order;
INSERT INTO order SELECT order_id, SUM(amount) FROM sales GROUP BY order_id;
如果您必须按顺序保留记录,则可以使用新的计算数据更新值,从sgeddes执行解决方案。
UPDATE orders o
INNER JOIN (SELECT order_id, SUM(amount) amount
FROM sales
GROUP BY order_id) s ON o.id = s.order_id
SET o.amount = s.amount
如果您想在此期间保留更新,您可以创建一个TRIGGER,以便每次将记录插入销售以更新订单时执行。
DELIMITER $$
CREATE TRIGGER order_trigger
AFTER INSERT ON sales
FOR EACH ROW BEGIN
-- HERE UPDATE/INSERT VALUES INTO ORDERS.
END $$
DELIMITER ;