我在返回奇怪结果的存储过程中有以下语句。给定两列,其中一个(RL)小于0,例如-2,则应将2加到另一列(HD)。如果负值为-8,则应在HD列中加上8。
在刚刚完成的测试中,RL列为0,HD为2。我将RL更改为-2并运行代码。我正在预期:RL = 0且HD = 4。INSTEAD的结果是RL = 0且HD = 5。
我认为问题是由于存在联接。我该怎么写,用WHERE子句代替join。
UPDATE P
SET P.HD = P.HD + P.RL
,P.RL = 0
FROM Products P
INNER JOIN (
SELECT id
,RL
FROM Products
WHERE id IN (
SELECT ProductID
FROM OrderDetails
WHERE OrderID = @OrderId
)
AND RL < 0
) Q ON P.ID = Q.id
干杯
试试这个-
UPDATE Products
SET HD = HD + RL,
RL = 0
FROM P
WHERE RL < 0
AND ID IN (
SELECT ProductID
FROM dbo.OrderDetails
WHERE OrderID = @OrderId
)
小支票-
DECLARE @t TABLE (a INT, b INT)
INSERT INTO @t (a, b)
VALUES (1, 2)
UPDATE @t
SET a = b, b = 0
SELECT * FROM @t
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句