首页 > 解决方案 > 从另一个多记录表更新多记录表

问题描述

我不知道它的正确标题。但是,让我解释一下我的问题。

我有 2 张桌子

PartTable
-------------------------------
ID  |  Quantity
1   |  10
2   |  10
3   |  10

TransTable
-------------------------------
TransID |ID  |  QtyIssue
1       |1   |  2
1       |2   |  2
1       |3   |  2

对于 TransTable,我使用单个查询来插入。

如何在单个查询中更新 PartTable 上的数量?

Quantity = Quantity - QtyIssue

我正在使用这个更新语句:

UPDATE PartTable SET Quantity = Quantity - (SELECT QtyIssue FROM TransTable WHERE TransID = 1)
WHERE ID IN (SELECT ID FROM TransTable WHERE TransID = 1)

但是错误:

Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
The statement has been terminated.

可能吗?

请帮助任何人。谢谢。

标签: sqlsql-serverstored-procedures

解决方案


您可以使用派生表对其进行更新

UPDATE  PartTable
        SET Quantity = Quantity - b.QtyIssue
FROM    PartTable a 
INNER JOIN (
SELECT  SUM(QtyIssue) QtyIssue,ID
FROM    TransTable  WHERE TransID = 1
GROUP BY ID) b ON   a.ID  = b.ID 

推荐阅读