交换同一个表中的数据

时间:2016-01-06 18:58:45

标签: sql sql-server

我需要一些查询帮助我在同一列中交换数据,如下所示:

ID    Name     Notebook Sales  Pen Sales
 1     33             2             3
 2     33             5             6
 3     5              8             9
 4     7              2             3
 5     35             5             6
 6     35             8             9

ID    Name     Notebook Sales  Pen Sales
 1     35             2             3
 2     35             5             6
 3     5              8             9
 4     7              2             3
 5     33             5             6
 6     33             8             9

在这个示例中,我将名称“33”替换为名称“35”,并保留每个名称的原始信息。

我正在处理5000多行,所以一个接一个地做一些事需要一段时间。

我想要的唯一方法是将名称为'33'的那个转换为'35'但是我会以这样的结尾:

ID    Name     Notebook Sales  Pen Sales
 1     35             2             3
 2     35             5             6
 3     5              8             9
 4     7              2             3
 5     35             5             6
 6     35             8             9

然后他们将混合制作难以将第一个'35'变为'33'。

希望你能帮助我解决这个问题并提前感谢。

1 个答案:

答案 0 :(得分:2)

您可以在一个update(或select语句)中执行此操作:

update t
    set name = (case when name = 33 then 35 else 33 end)
    where name in (33, 35);

在更新中,更改在语句结束并且更改提交到数据库之前不可见。因此,作业右侧的值来自" old"表的版本。