sql - 如何根据另一个表多次更新表
问题描述
我正在尝试根据另一个表中的数据多次更新一个表。
以下是我目前的表格设计:
Table A Table B
-------------------- --------------------
Goods QTY Type Goods QTY Type
Wood 0 R1 Wood 1 R1
Wood 10 R2 Wood 4 R1
Glass 10 R1 Wood 5 R1
Glass 0 R2 Glass 5 R2
Glass 4 R2
如果可能的话,我想在一个更新语句中根据表 B 中 的数量对表 A 中的数量进行添加。
预期的输出是这样的:
Table A
--------------------
Goods QTY Type
Wood 10 R1 ---> Previous value: 0
Wood 10 R2
Glass 10 R1
Glass 9 R2 ---> Previous value: 0
我已经尝试了以下更新语句无济于事:
UPDATE Table A
SET A.QTY = A.QTY + B.QTY
FROM Table A as A JOIN Table B as B ON A.Goods = B.Goods AND A.Type = B.Type
但是,上述查询语句仅更新表 B 上的第一个不同值。它仅更新to和QTY
of to 。Wood
1
QTY
Glass
5
解决方案
您可以使用内联子查询,例如:
UPDATE TableA A
SET A.QTY = A.QTY + (
SELECT SUM(B.QTY) FROM TableB B WHERE A.Goods = B.Goods AND A.Type = B.Type
)
推荐阅读
- python - 如何解决无法拥有 2 个嵌入命令 discord bot PY
- regex - 每次下一个字符与字母/数字或下划线不同时,使用正则表达式查找一个单词
- arrays - 数组重复相同的项目问题
- cmake - build.make:88 上的 clang 链接器错误和对“Unwind_GetIPInfo”的未定义引用
- xml - 如何从 Blogger 标签中删除单词
- tcp - 通过Mqtt传输大量数据(即每条数据约100MB)是正确的选择吗?
- python - 按用户自定义模型字段
- java - 如何访问构造函数?
- c# - 无法添加 nuget 依赖项'因为 package.config 中的约束'
- node.js - 如何将元素添加到文档内的数组中,该文档不包含该数组内的某个元素?