我正在尝试使用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
有没有人知道这样做的好方法?
答案 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