sql - 使用来自其他字段的 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
解决方案
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;
推荐阅读
- azure - 我应该在 Azure AD B2C 中同时注册前端应用和 api 应用吗?
- java - 序列化作为 Object 传递的可序列化对象
- azure - Calico GlobalNetworkPolicy 排除不起作用
- google-apps-script - 复制数据脚本不再起作用
- java - javax.crypto.BadPaddingException:解密错误 - 无法从文件中解密多个块
- tensorflow - 如何在 Tensorflow 2.0 (TFP) 中调试爆炸梯度(协方差矩阵)
- php - wordpress searchandfilter插件和php代码结果问题
- git - 在创建分支时使用 git 解决问题
- git - 无法将 Maven 上游包获取到 Azure DevOps Artifacts
- json - 用 jq 展平 JSON 结构,不重复