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

MySQL:如何将子级的SUM()值更新到同一表中的父行?,mysql,sum,sql-update,temp-tables,mysql-error-1111,Mysql,Sum,Sql Update,Temp Tables,Mysql Error 1111,我需要获取子行的总和值,并更新父行上的数据。 我得到了如下所示的结果,但遇到了错误#1111(组函数的使用无效) 您需要做的是按id分组,以分离每个父id的子和。您需要使用subselect来完成此操作 此外,您不需要创建临时表。只需将聚合包装在子选择中(按父项id分组),并将子选择连接到主表: UPDATE cms_ladu a INNER JOIN ( SELECT parent_id, SUM(packaging_units_in) AS

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


您需要做的是按id分组,以分离每个父id的子和。您需要使用subselect来完成此操作

此外,您不需要创建临时表。只需将聚合包装在子选择中(按父项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
试一试


请问,如何在MS SQLSERVER中执行此操作?它不接受这种联合税。
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
UPDATE  cms_ladu a
    INNER JOIN (SELECT parent_id, SUM(packaging_units_in) AS packaging_units_in, SUM(net_weight_in) AS net_weight_in FROM cms_ladu_temp WHERE id IN (326,500) GROUP BY parent_id) b
        ON b.parent_id=a.id
SET     a.child_packaging_units_in = b.packaging_units_in
    ,a.child_net_weight_in = b.net_weight_in