0

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

これを行うための良い方法を知っている人はいますか?

4

1 に答える 1

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

于 2012-11-01T17:14:37.047 に答える