Dugaan saya adalah karena Anda telah menunjukkan kepada kami skema yang disederhanakan, beberapa info hilang yang akan menentukan mengapa nilai VarietyID berulang untuk ID Pesanan tertentu.
Saat Anda memiliki beberapa baris, SQL Server akan secara acak memilih salah satunya untuk pembaruan.
Jika demikian, Anda harus mengelompokkan terlebih dahulu
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
Jika tidak, maka tabel OrderItems PK salah karena jika memungkinkan kombinasi OrderID/VarietyID duplikat (PK harus OrderID/VarietyID, atau ini harus dibatasi unik)