我有3个表(简化):
tblOrder(OrderId INT)
tblVariety(VarietyId INT,Stock INT)
tblOrderItem(OrderId,VarietyId,Quantity INT)
Run Code Online (Sandbox Code Playgroud)
如果我下订单,我会使用以下方式降低库存水平:
UPDATE tblVariety
SET tblVariety.Stock = tblVariety.Stock - tblOrderItem.Quantity
FROM tblVariety
INNER JOIN tblOrderItem ON tblVariety.VarietyId = tblOrderItem.VarietyId
INNER JOIN tblOrder ON tblOrderItem.OrderId = tblOrder.OrderId
WHERE tblOrder.OrderId = 1
Run Code Online (Sandbox Code Playgroud)
一切正常,直到tblOrderItem中有两行,同一个OrderId具有相同的VarietyId.在这种情况下,只有一行用于库存更新.似乎在某种程度上在那里做了一个GROUP BY VarietyId.
任何人都能解释一下吗?非常感谢.