Mijn gok is dat omdat je ons een vereenvoudigd schema hebt getoond, er wat informatie ontbreekt die zou bepalen waarom de herhaalde VarietyID-waarden voor een bepaalde OrderID zijn.
Als u meerdere rijen heeft, kiest SQL Server willekeurig een van deze voor de update.
Als dit het geval is, moet u eerst groeperen
UPDATE V
SET
Stock = Stock - foo.SumQuantity
FROM
tblVariety V
JOIN
(SELECT SUM(Quantity) AS SumQuantity, VarietyID
FROM tblOrderItem
JOIN tblOrder ON tblOrderItem.OrderId = tblOrder.OrderId
WHERE tblOrder.OrderId = 1
GROUP BY VarietyID
) foo ON V.VarietyId = foo.VarietyId
Als dat niet het geval is, is de PK van de OrderItems-tabel verkeerd, omdat dubbele combinaties van OrderID/VarietyID zijn toegestaan (de PK moet OrderID/VarietyID zijn, of deze moeten uniek zijn)