[pgsql-jp: 37121] Re: 指定した範囲の複数行を削除したい

Takao Kato sirius @ jp.fujitsu.com
2006年 5月 30日 (火) 17:27:49 JST


加藤@川崎です。

> 行数により範囲を指定して、
> 一度に複数行を削除したいときの
> SQLはどのように指定すればよろしいのでしょうか。

UNIQUE KEY(当然PRIMARY KEYでもOK)なカラムあります?該当するカラムがあ
るなら、記載していたSELECT文をサブクエリに回して

% psql
=> DELETE FROM sometable WHERE xxx in (SELECT xxx FROM sometable LIMIT 10 OFFSET 10);

とかでできますよね。



他には(力技ですけど)

% psql
=> COPY sometable TO '/tmp/hoge.out';
=> DELETE FROM sometable;               -- いったん全部削除
=> \q
% perl -e '$i = 1;while(<>){print unless (10 <= $i && $i < 20);$i++;}' /tmp/hoge.out > /tmp/hoge.in
% psql
=> COPY sometable FROM '/tmp/hoge.in';

なんてのもできます。当然のことながらテーブルへの読み書きがないことが前
提になります。

では
-------------------------------------------------------------
加藤@川崎



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