重複行の削除で一意のインスタンスを保持する
大規模なデータセットを操作する場合、重複行を削除することが必要になる場合があります。ただし、特定のシナリオでは、各重複行の 1 つのコピーを保持することが望ましい場合があります。このような場合、選択的削除を実行するには、的を絞ったアプローチが必要です。
問題の理解
PostgreSQL では、説明されている状況には、セットの 1 つを除くすべてのインスタンスを削除することが含まれます。重複した行の。たとえば、同じ値を持つレコードが 5 つある場合、目標は、そのうちの 4 つを削除し、1 つをそのまま残すことです。
解決策の検索
包括的な説明この問題については、記事「PostgreSQL データベースからの重複の削除」で説明されています。著者らは、効果的にグループ化できない膨大な量のデータを処理するという具体的な課題に取り組んでいます。
簡単な解決策
この記事では、次のような簡単な解決策を推奨しています。
DELETE FROM foo WHERE id NOT IN (SELECT min(id) --or max(id) FROM foo GROUP BY hash)
このクエリでは、「ハッシュ」は重複を判断するために使用されるフィールドまたはフィールドの組み合わせを表します。重複グループごとに「id」フィールドの最小値または最大値のいずれかを使用することで、1 つのインスタンスを保持できます。
この対象を絞ったアプローチにより、参照用または参照用の 1 つのコピーを維持しながら重複行を効率的に削除できます。分析。
以上が単一のインスタンスを保持しながら、PostgreSQL で重複する行を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。