SQL Server连接问题

缺口

我在返回奇怪结果的存储过程中有以下语句。给定两列,其中一个(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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章