最初のインスタンスを除く重複行の効率的な削除
問題:
テーブルがありますユーザーの送信によって発生した多数の重複エントリを含むデータが含まれています。目標は、subscriberEmail フィールドに基づいてこれらの重複行を削除し、最も早く送信されたレコードのみを残すことです。つまり、元の送信内容を保持しながら、すべての重複電子メールを特定し、対応する行を削除したいとします。
解決策:
1.自己結合アプローチ:
テーブルを交換する代わりに、自己結合を活用して目標を達成できます:
<code class="sql">delete x from myTable x join myTable z on x.subscriberEmail = z.subscriberEmail where x.id > z.id</code>
このクエリでは:
2.その他の考慮事項:
今後の重複挿入を防ぐために、subscriberEmail 列に UNIQUE INDEX を作成することを検討してください。
利点:
このアプローチでは、一時テーブルを作成するオーバーヘッドを発生させずに重複行を効率的に削除します。既存のテーブル構造を利用し、id フィールドに基づいて各行の一意の ID を保持します。
以上が最古のインスタンスを除いて重複行を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。