最古のインスタンスを除いて重複行を効率的に削除するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-10-31 11:34:01
オリジナル
767 人が閲覧しました

How to Efficiently Remove Duplicate Rows Except for the Earliest Instance?

最初のインスタンスを除く重複行の効率的な削除

問題:

テーブルがありますユーザーの送信によって発生した多数の重複エントリを含むデータが含まれています。目標は、subscriberEmail フィールドに基づいてこれらの重複行を削除し、最も早く送信されたレコードのみを残すことです。つまり、元の送信内容を保持しながら、すべての重複電子メールを特定し、対応する行を削除したいとします。

解決策:

1.自己結合アプローチ:

テーブルを交換する代わりに、自己結合を活用して目標を達成できます:

<code class="sql">delete x
from myTable x
join myTable z on x.subscriberEmail = z.subscriberEmail
where x.id > z.id</code>
ログイン後にコピー

このクエリでは:

  • xz は、同じテーブルの 2 つのインスタンスを表すエイリアスです。
  • JOIN 句は、一致するsubscriberEmail に基づいてレコードを照合します。
  • WHERE 句は、id が対応する id より大きいレコードを x から選択します。 z に記録します。これにより、より高い ID を持つ重複行のみが削除対象として選択されるようになります。

2.その他の考慮事項:

今後の重複挿入を防ぐために、subscriberEmail 列に UNIQUE INDEX を作成することを検討してください。

利点:

このアプローチでは、一時テーブルを作成するオーバーヘッドを発生させずに重複行を効率的に削除します。既存のテーブル構造を利用し、id フィールドに基づいて各行の一意の ID を保持します。

以上が最古のインスタンスを除いて重複行を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!