1

次のようなOracleテーブルがあります。

fruit    id
-------- -----
apple     1
plum      9
pear      55
orange    104
..

id 列の番号が間違っています。各行の ID を更新して、次のように並べ替えるにはどうすればよいですか。

fruit    id
-------- -----
apple     1
plum      2
pear      3
orange    4

これを行う最も効率的な方法は何ですか?

4

3 に答える 3

1

古い順序を保証する必要がある場合は、次のようにします。

merge into the_table 
using
( 
   select rowid as rid, 
          row_number() over (order by id asc) as new_id
   from the_table
) t on (t.rid = the_table.rowid) 
when matched then 
  update set id = new_id;
于 2013-04-09T14:42:16.063 に答える
0
DECLARE
i INTEGER :=1;
BEGIN;
    FOR n IN (SELECT your_primary_id  FROM your_table_name ORDER BY your_primary_id);
    LOOP;
        UPDATE your_table_name 
          SET your_primary_id=i 
          WHERE your_primary_id = n.your_primary_id;
        i := i + 1;
    END LOOP;
END;
/
于 2014-04-04T06:32:33.597 に答える