简体   繁体   English

从另一个多记录表更新多记录表

[英]Update multiple records table from another multiple records table

I don't know the right title about it. 我不知道正确的标题。 But, Let me explain about my question. 但是,让我解释一下我的问题。

I have 2 tables 我有2张桌子

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

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

for TransTable, I'm using single query to insert. 对于TransTable,我使用单个查询进行插入。

How to update Quantity on PartTable in single Query? 如何在单个查询中更新PartTable上的数量?

Quantity = Quantity - QtyIssue

I'm using this update statement: 我正在使用此更新语句:

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

But error : 但是错误:

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.

Is it possible? 可能吗?

Please help anyone. 请帮助任何人。 Thanks. 谢谢。

You Can Update It by Using Derived Table 您可以使用派生表进行更新

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 

Here you go >> 你去>>

UPDATE parttable pt 
SET    pt.quantity = pt.quantity - (SELECT tt.qtyissue 
                                    FROM   transtable tt 
                                    WHERE  tt.transid = 1 
                                           AND tt.id = pt.id) 
WHERE  pt.id IN (SELECT tt1.id 
                 FROM   transtable tt1 
                 WHERE  tt1.transid = 1) 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM