Meine Vermutung ist, dass, weil Sie uns ein vereinfachtes Schema gezeigt haben, einige Informationen fehlen, die bestimmen würden, warum die wiederholten VarietyID-Werte für eine bestimmte OrderID vorhanden sind.
Wenn Sie mehrere Zeilen haben, wählt SQL Server willkürlich eine davon für die Aktualisierung aus.
In diesem Fall müssen Sie zuerst gruppieren
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
Wenn nicht, dann ist der PK der OrderItems-Tabelle falsch, weil er doppelte OrderID/VarietyID-Kombinationen zulässt (Der PK sollte OrderID/VarietyID sein, oder diese sollten eingeschränkt eindeutig sein)