簡略化されたスキーマを示したため、特定の OrderID に対して VarietyID 値が繰り返される理由を特定する情報が欠落していると推測されます。
複数の行がある場合、SQL Server はそれらの 1 つを更新用に任意に選択します。
この場合、最初にグループ化する必要があります
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
そうでない場合は、OrderID/VarietyID の組み合わせの重複を許可するため、OrderItems テーブルの PK が間違っています (PK は OrderID/VarietyID にするか、これらを一意に制限する必要があります)