使用 join 更新只执行一个

Update using join executes only ones

我有一个有两行的 table。这些行使用相同的 ItemID 但不同的 Quantity 和 RowID。

当我执行如下所示的查询时,代码似乎只运行一次:

这是我的查询:

Update t1 
Set t1.Stock = t1.Stock + t2.Quantity
From Inventory t1 
Join InventoryTrans t2 On t1.ItemID = t2.ItemID  
Where t2.RowID In (26221, 26222) 

我对库存的预期结果应该是 3。但由于某种原因是 1

你需要在这里聚合。很可能是这样的:

UPDATE I
SET Stock = I.Stock + IT.TotalQuantity
FROM dbo.Inventory I
     CROSS APPLY (SELECT SUM(Quantity) AS TotalQuantity
                  FROM dbo.InventoryTrans ca
                  WHERE ca.ItemID = I.ItemID
                    AND ca.RowID In (26221, 26222)
                  GROUP BY ca.ItemID) IT;

注意我也使用有意义的别名。不要使用 t1t2t3 等别名,因为它们毫无意义且不一致。参见 Bad Habits to Kick : Using table aliases like (a, b, c) or (t1, t2, t3)