ホームページ > データベース > mysql チュートリアル > PostgreSQL で重複行のコピーを 1 つだけ保持するにはどうすればよいですか?

PostgreSQL で重複行のコピーを 1 つだけ保持するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-06 10:15:43
オリジナル
753 人が閲覧しました

How to Keep Only One Copy of Duplicate Rows in PostgreSQL?

Postgres で重複行のコピーを 1 つ保持する

重複データを扱う場合、多くの場合、少なくとも 1 つを保持しながら冗長性を削除する必要があります。各重複セットのインスタンス。 Postgres では、これは次のアプローチで実現できます:

単一のコピーを保持しながら重複行を削除するには、次のクエリを使用できます:

DELETE FROM foo
WHERE id NOT IN (
  SELECT MIN(id)  -- or MAX(id) for the latest copy
  FROM foo
  GROUP BY hash
);
ログイン後にコピー

このクエリ内:

  • foo は重複行を含むテーブルです。
  • id は主キーですcolumn.
  • ハッシュは、重複する行を識別する列または式 (列の一意の組み合わせやハッシュ関数など) です。

MIN(id) または MAX( id) サブクエリ内で、各重複セットの最も古いコピーまたは最新のコピーのみが保持されるようにします。

このアプローチでは、少なくとも次のことが保証されます。不要な重複を削除しながら、各重複行の 1 つのコピーがテーブルに保存されます。

以上がPostgreSQL で重複行のコピーを 1 つだけ保持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート