一尘不染

交换SQL Server中同一表中两行的值

sql

我想交换表中两行中的值。我有两行的行ID。是否有任何查询可以做到这一点?这是一个例子。在查询之前,我有这个:

第1行:1、2、3
第2行:5、6、7

交换之后,我想要这样:

第1行:5、6、7
第2行:1、2、3

阅读 302

收藏
2021-03-10

共1个答案

一尘不染

如果要将两个已知ID的值从一行交换到另一行,请尝试以下操作:

--need to store the original values
SELECT
    *,CASE WHEN id=123 then 987 ELSE 123 END AS JoinId
    INTO #Temp
    FROM YourTable
    WHERE ID in (123,987)

--swap values
UPDATE y
    SET col1=t.col1
        ,col2=t.col2
    FROM YourTable        y
        INNER JOIN #Temp  t ON y.id =t.JoinId
    WHERE ID in (123,987)
2021-03-10