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

标签 sql sql-server

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

row1 : 1,2,3
row2 : 5,6,7

交换后我想要这个:

row1 : 5,6,7
row2 : 1,2,3

最佳答案

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

关于sql - 交换 SQL Server 中同一个表中两行的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2758415/

相关文章:

sql - 如果指定了 SELECT DISTINCT,则 ORDER BY 项目必须出现在选择列表中......我花了几个小时但没有找到

sql - 在 UPDATE 查询中使用 SELECT

c# - sql查询根据条件对一列中的相同值进行分组

mysql - 如何循环访问同一个表中的值?

sql - 正确使用计数功能

sql-server - 跨多个数据库创建 View

php - SQL 按随机顺序选择但不要从特定列中选择重复项

mysql - GROUP BY 分组查询的结果

where子句中的MySQL错误?

SQL 查询 : EXISTS in Subtable