[pgsql-jp: 34273] Re: シーケンシャルNUMBER 割り振り(Was:同一テーブル内での列コピー)

ISHIDA Akio iakio @ mono-space.net
2004年 11月 12日 (金) 16:39:39 JST


こんにちは。石田@苫小牧市です。

it_555_it @ excite.co.jp wrote:
> 島田です。
> 皆さんありがとうございました。
> 絶対無理だろうと試そうともしていませんでした。
> お恥ずかしい限りです。
> 
> ちょっと便乗質問になってしまうのですが、
> もしかして、下のようなことも簡単にできるのでしょうか。
> 
> 下記のようにIDが抜けている列(id)に、
> 番号をシーケンシャルに振る。
> 
> id     name 
> ------------
>        a     
>        a     
>        b     
>        c     
> 
> これも2万行ぐらいあるのですが、
> 1行目は1、2行目は2なんて、同じようにプロシージャ書いてみましたが、
> 2万回もループするんで、勿論使い物になりませんでした。。。

順番がどうでも良くて、とりあえずユニークなidを振りたいのであれば、
=> create sequence id_seq;
=> alter table tbl alter column id set default nextval('id_seq');
=> update tbl set id = default;
でいけると思います。

nameでソートされた順番に振りたいのであれば、
テンポラリテーブルに一旦書き出すとか。

=> create sequence id_seq;
=> create temp table tmp_table as
   select nextval('id_seq'), name from tbl order by name;

> # トリッキーなSQLを集めたお奨め本ってありますでしょうか?

これは私も知りたいです。



pgsql-jp メーリングリストの案内