交换 SQL Server 中同一表中两行的值 [英] Swap values for two rows in the same table in SQL Server

查看:48
本文介绍了交换 SQL Server 中同一表中两行的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

<前>第 1 行:1,2,3第 2 行:5,6,7

交换后我想要这个:

<前>第 1 行:5,6,7第 2 行:1,2,3

解决方案

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

--需要存储原始值选择*,CASE WHEN id=123 then 987 ELSE 123 END AS JoinId进入#Temp从你的桌子WHERE ID 在 (123,987)--交换值更新SET col1=t.col1,col2=t.col2从你的表 yINNER JOIN #Temp t ON y.id =t.JoinIdWHERE ID 在 (123,987)

I want to swap the values from two rows in a table. I have the rows IDs of the two rows. Is there any query to do that? Here is an example. Before the query I have this:

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

After the swap I want this:

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

解决方案

If you want to swap values from one row to the other for two known IDs try something like this:

--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 Server 中同一表中两行的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆