[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 メーリングリストの案内