1. ホーム
  2. sql

[解決済み] 小さなテーブルから重複した行を削除する

2022-05-11 02:59:19

質問

PostgreSQL 8.3.8 データベースに、キーや制約を持たないテーブルがあり、まったく同じ値を持つ複数の行があります。

私はすべての重複を削除し、各行のコピーを1つだけ保持したいと思います。

特に、重複を識別するために使用される可能性のある列 ("key" という名前) が 1 つあります。つまり、個別の "key" それぞれについて 1 つのエントリのみが存在するはずです。

どうすればよいのでしょうか? (理想的には、1 つの SQL コマンドで。)

この場合、速度は問題ではありません(数行しかありません)。

どのように解決するのですか?

DELETE FROM dupes a
WHERE a.ctid <> (SELECT min(b.ctid)
                 FROM   dupes b
                 WHERE  a.key = b.key);