使用其他字段的SUM进行SQL更新

时间:2018-11-14 14:53:58

标签: sql sql-server

我已经尝试了Stack上提供的许多解决方案来解决此问题,但是似乎对其他人有用的解决方案对我而言不起作用。我的情况很简单,我似乎无法将提供的解决方案简化到我所需的范围。

我有两个表:

大师

M_ID, Name, total_number

事物

T_ID, M_ID, thing, number

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

这是我希望实现的查询,完全了解这并不可行:

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

2 个答案:

答案 0 :(得分:2)

为什么不只对APPLYupdate呢?

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;

答案 1 :(得分:0)

尝试一下...

UPDATE m
SET    m.total_number = theSum.Val
FROM   master  m
OUTER APPLY
(
    SELECT [Val] = SUM(number)
    FROM   things
    WHERE  things.M_ID = m.M_ID
) theSum
--WHERE  M_ID = 1234      -- <=== Optionally...just for a specific ID.