首页 > 解决方案 > 使用来自其他字段的 SUM 进行 SQL 更新

问题描述

我已经尝试了 Stack 上的许多可用解决方案来解决这个问题,但似乎对其他人有用的方法对我不起作用。我的情况非常简单,我似乎无法将提供的解决方案简化为我需要的解决方案。

我有两张桌子:

掌握

M_ID, Name, total_number

事物

T_ID, M_ID, thing, number

我可以查询总和,但是我无法用总和更新 master.total_number。我已经尝试了各种解决方案,我真的认为我想太多了,所以我放弃了!

这是我希望实现的查询,完全知道这不能按原样工作:

UPDATE master
set master.total_number = (SELECT SUM(things.number) 
                           from things 
                           where M_ID = 1234) 
where master.M_ID = 1234

标签: sqlsql-server

解决方案


APPLY为什么不只做update

UPDATE m
     SET m.total_number = s.sum_no
FROM master m CROSS APPLY
     (SELECT SUM(t.number) as sum_no
      FROM things t
      WHER t.M_ID = m.M_ID
     ) s;
WHERE m.M_ID = 1234;

但是,您的更新查询需要关联,因此,它将是:

UPDATE m
     SET M.total_number = (SELECT SUM(t.number) 
                           FROM things t
                           WHERE t.M_ID = m.M_ID
                          )
FROM master m 
WHERE m.M_ID = 1234;

推荐阅读