Domyślam się, że ponieważ pokazałeś nam uproszczony schemat, brakuje niektórych informacji, które określiłyby, dlaczego powtarzające się wartości VarietyID dla danego OrderID.
Jeśli masz wiele wierszy, SQL Server arbitralnie wybierze jeden z nich do aktualizacji.
W takim przypadku musisz najpierw pogrupować
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
Jeśli nie, to tabela OrderItems PK jest błędna, ponieważ jeśli zezwala na zduplikowane kombinacje OrderID/VarietyID (PK powinien być OrderID/VarietyID lub powinny być one ograniczone unikatowo)