首页 > 解决方案 > 如何根据另一个表多次更新表

问题描述

我正在尝试根据另一个表中的数据多次更新一个表。
以下是我目前的表格设计:

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和QTYof to 。Wood1QTYGlass5

标签: sqlsql-server

解决方案


您可以使用内联子查询,例如:

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
)

推荐阅读