Перенумерация строк

rvolt
Дата: 01.03.2007 18:50:54
В общем проблема такая, есть таблица с целочисленным полем, по этому полю происходит сортировка записей при выводе. Обычно в этом поле имеются данные следующего вида:

----------------------
Данные, Позиция
----------------------
Данные 1, 100
Данные 2, 200
Данные 3, 300
Данные 4, 400

И когда, например, строку 3 надо перетащить на 2-ю позицию делаю так:

----------------------
Данные, Позиция
----------------------
Данные 1, 100
Данные 2, 200
Данные 3, 150
Данные 4, 400

Теперь вопрос - каким образом можно перенумеровать ряд что бы он принял вид исходного, т.е.:

----------------------
Данные, Позиция
----------------------
Данные 1, 100
Данные 2, 300
Данные 3, 200
Данные 4, 400

В mysql всё делается просто:
set @counter := 0;
update table_name set position = (@counter := @counter + 100) order by position;

Самому времени нет разбираться, может кто что-нибудь посоветует?
Elic
Дата: 01.03.2007 18:54:17
orawish
Дата: 01.03.2007 19:13:05
9i+
create --drop
table mumu as select rownum rn, dbms_random.value v from tab where rownum<11;

select * from mumu order by rn;

merge into mumu D
using (select rowid rw,row_number() over (order by v) r from mumu ) S
on (D.rowid = S.rw)
when matched then update set
  D.rn = S.r
when not matched then insert 
  (D.rn  ) values (null);
  
select * from mumu order by rn;
rvolt
Дата: 01.03.2007 21:13:12
Всем спасибо за помощь :)