2016-01-06 53 views
0

我需要一些帮助的查询,让我这样在同一列交换数据:交换数据

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'。

希望你能帮助我,并提前感谢。

+0

你究竟想在这里完成什么? –

+0

什么决定了你是否交换名字?为什么5和7不能交换? – cronos2546

+0

我只想交换名称而不是行的其余部分 –

回答

2

您可以在一个update(或select语句)做到这一点:

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

在更新,变化是不可见的,直到他们语句结束和更改提交到数据库。因此,作业右侧的值来自表格的“旧”版本。

+0

我们不知道他只希望35为33,反之亦然 – cronos2546

+0

@ cronos2546。 。 。其实,在这一点上我发现这个问题很清楚。这个例子明确地涉及这两个值,并且在找到切换值的问题中没有任何内容。 –

+0

我没有downvoted我wouldk知道为什么你也downvoted –