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

新手上路,请多包涵

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

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

交换后我想要这个:

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

原文由 Amr Elnashar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

如果您想将两个已知 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)

原文由 KM. 发布,翻译遵循 CC BY-SA 2.5 许可协议

UPDATE Salary SET sex = CASE WHEN sex =’m’ THEN ‘f’ ELSE ’m’ END

原文由 maruf ahmed 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进