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

1 つのコピーを保持したまま重複する PostgreSQL 行を削除するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-06 10:03:42
オリジナル
769 人が閲覧しました

How to Delete Duplicate PostgreSQL Rows While Keeping One Copy?

単一コピーの保持: 重複する 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 サイトの他の関連記事を参照してください。

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