Предполагам, че тъй като ни показахте опростена схема, липсва някаква информация, която да определи защо има повтарящи се стойности на VarietyID за даден OrderID.
Когато имате няколко реда, SQL Server произволно ще избере един от тях за актуализация.
Ако случаят е такъв, първо трябва да групирате
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
Ако не, тогава таблицата OrderItems PK е грешна, защото if позволява дублиращи се комбинации OrderID/VarietyID (PK трябва да бъде OrderID/VarietyID или те трябва да бъдат ограничени уникални)