単一コピーの保持: 重複する PostgreSQL 行の削除
データ管理の領域では、重複行が発生すると課題が生じる可能性があります。人気のリレーショナル データベース管理システムである PostgreSQL は、このような状況に対処するためのさまざまなオプションを提供します。ユーザーが各セットから 1 つのコピーを保持しながら重複行を削除しようとする場合、1 つの特定のシナリオが発生します。
クエリ ソリューション
これを実現するには、SQL クエリを使用できます。 。次のクエリは、提供されている記事で説明されている手順に従います。
DELETE FROM foo WHERE id NOT IN (SELECT min(id) --or max(id) FROM foo GROUP BY hash)
説明
このクエリは、サブクエリを使用して、各グループの最小または最大 ID 値を識別します。重複した行の。ハッシュ列は、重複を判断する基準を表します。最小値または最大値に一致しない ID を除外することで、クエリは重複の各セットの 1 つのコピーを保持し、残りは削除します。
代替クエリ
代替アプローチROW_NUMBER() OVER () 関数の使用が含まれます:
DELETE FROM foo AS f WHERE ROW_NUMBER() OVER (PARTITION BY hash ORDER BY id) > 1
このクエリ各行に行番号を割り当て、ハッシュ列で分割し、ID 列で昇順に並べ替えます。その後、行番号が 1 より大きい行 (重複) が削除されます。
結論
提示されたクエリのいずれかを PostgreSQL に実装することで、ユーザーは効果的に重複を削除できます。各セットから 1 つのコピーを保持しながら、行を保存します。このアプローチにより、元のデータセットの整合性を維持しながら、冗長データを削除できます。
以上が1 つのコピーを保持したまま重複する PostgreSQL 行を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。