我正在尝试更新一个表中的列,以便汇总与特定键关联的另一个表中的所有值。我无法正确使用语法,我无法在网上找到这个问题的答案。
我已经尝试改变我放“SUM”的位置,但它不起作用。
这是代码:
UPDATE purchase_order
SET total = SUM(SELECT total FROM purchase_order_items
WHERE purchase_order_items.purchase_order_order_no = purchase_order.order_no));
这应该导致purchase_order表中的“total”列更新为purchase_order_items中order_no列键在两个表中匹配的每个条目的“total”列的总和。
您应该在子查询中使用SUM函数并将结果分配给主表。
UPDATE PURCHASE_ORDER
SET TOTAL = (SELECT SUM(PURCHASE_ORDER_ITEMS.TOTAL)
FROM PURCHASE_ORDER_ITEMS
WHERE PURCHASE_ORDER_ITEMS.PURCHASE_ORDER_ORDER_NO =
PURCHASE_ORDER.ORDER_NO);
你可以使用MERGE
声明:
MERGE INTO purchase_order dst
USING (
SELECT purchase_order_order_no,
SUM( total ) AS total
FROM purchase_order_items
GROUP BY purchase_order_order_no
) src
ON ( dst.order_no = src.purchase_order_order_no )
WHEN MATCHED THEN
UPDATE SET total = src.total;