gpt4 book ai didi

MySQL:如何将子项的 SUM() 值更新为同一表中的父行?

转载 作者:可可西里 更新时间:2023-11-01 08:06:53 27 4
gpt4 key购买 nike

我需要获取子行的总和值并更新父行的数据。我已经得到了这个,如下所示,但遇到了错误#1111(组函数的使用无效)。

CREATE TEMPORARY TABLE cms_ladu_temp LIKE cms_ladu;

INSERT INTO cms_ladu_temp SELECT * FROM cms_ladu WHERE parent_id IN (326,500);

UPDATE
cms_ladu
INNER JOIN
cms_ladu_temp
ON
cms_ladu_temp.parent_id=cms_ladu.id
SET
cms_ladu.child_packaging_units_in=SUM(cms_ladu_temp.packaging_units_in),
cms_ladu.child_net_weight_in=SUM(cms_ladu_temp.net_weight_in)
WHERE
cms_ladu.id IN (326,500);

最佳答案

您需要做的是按 id 分组,以分隔每个父 id 的子总和。您将需要使用子选择来完成此操作。

此外,您不需要创建临时表。只需将聚合包装在子选择中(按 parent_id 分组),然后将子选择加入主表:

UPDATE 
cms_ladu a
INNER JOIN
(
SELECT parent_id,
SUM(packaging_units_in) AS pui,
SUM(net_weight_in) AS nwi
FROM cms_ladu
WHERE parent_id IN (326,500)
GROUP BY parent_id
) b ON a.id = b.parent_id
SET
a.child_packaging_units_in = b.pui,
a.child_net_weight_in = b.nwi

关于MySQL:如何将子项的 SUM() 值更新为同一表中的父行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11555592/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com