我已经尝试了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
答案 0 :(得分:2)
为什么不只对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;
答案 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.