Oracle编号更新

时间:2012-11-01 17:10:34

标签: oracle sql-update

我正在尝试使用Oracle进行一些SQL

我有一个包含文本数据的表格,以及该文本应该如何显示的数字的顺序列表,1-27。

So:
Bonjour | 1
mon nom | 2
Jean P. | 3
Hello J | 4
Je suis | 5
is John | 6

现在我必须重新排序列表编号:     5到2号,并且移动2到3,3到4,4到5,但不是5到6或6到任何东西。请记住,这是27号的列表。

So I'll have:
Bonjour | 1
mon nom | 2
Jean P. | 3
Hello J | 4
My name | 5
is John | 6

有没有人知道这样做的好方法?

1 个答案:

答案 0 :(得分:2)

类似的东西:

update foobar
   set sort_nr = case 
                   when sort_nr = 5 then 2
                   when sort_nr = 2 then 3
                   when sort_nr = 3 then 4
                   when sort_nr = 4 then 5
                   else sort_nr
                end
where sort_nr in (2,3,4,5);

案件中的else部分并非严格必要。但是如果你忘记了where子句,它会阻止意外的错误更新。

这是一个SQLFiddle示例:http://sqlfiddle.com/#!4/52d50/1