在oracle中的同一列中交换名称

时间:2013-08-21 11:27:54

标签: mysql sql oracle

在表中有数据。就像这个

ID      NAME
1   Apple
2   Apple
3   Apple
4   orange
5   orange
6   orange
7   Apple
8   Apple
9   Apple
10  orange
11  orange
12  orange

数据可能超过1000次。现在需要交换/更改/更新苹果到橙色和橙色到苹果。

2 个答案:

答案 0 :(得分:7)

您可以在case声明中使用update执行此操作:

update t
    set name = (case when name = 'Apple' then 'Orange'
                     when name = 'Orange' then 'Apple'
                end)
    where name in ('Apple', 'Orange');

这是标准的SQL,可以在MySQL和Oracle中使用。

如果您不需要实际更改名称,只需在select中交换名称,那么请在查询中执行逻辑:

select (case when name = 'Apple' then 'Orange'
             when name = 'Orange' then 'Apple'
             else name
        end) as name
from t;

答案 1 :(得分:0)

update  YourTable
set     name = 
        case name
        when 'Apple' then 'Orange'
        when 'Orange' then 'Apple'
        end 
 where  name in ('Apple', 'Orange')