Mit gæt er, at fordi du har vist os et forenklet skema, mangler der nogle oplysninger, der kan afgøre, hvorfor vi har de gentagne VarietyID-værdier for et givet OrderID.
Når du har flere rækker, vil SQL Server vilkårligt vælge en af dem til opdateringen.
Hvis dette er tilfældet, skal du først gruppere
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
Hvis ikke, så er OrderItems-tabellen PK forkert, fordi den tillader duplikerede OrderID/VarietyID-kombinationer (PK'en skal være OrderID/VarietyID, eller disse skal begrænses unikke)