ホームページ >データベース >mysql チュートリアル >テーブル内の元のエントリを保持しながら重複行を削除するにはどうすればよいですか?

テーブル内の元のエントリを保持しながら重複行を削除するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-31 19:12:29725ブラウズ

How to Eliminate Duplicate Rows While Preserving the Original Entry in a Table?

オリジナル性を維持しながら重複行を削除する

質問:

データの整合性を維持することは非常に重要です。また、多くの場合、ユーザーの送信によって重複エントリが発生する可能性があります。 subscriberEmail などの特定のフィールドに基づいて重複エントリが存在するシナリオでは、目的はこれらの重複を削除し、元のエントリのみを保持することです。テーブルのスワッピングに頼らずにこれを効率的に行うにはどうすればよいでしょうか?

答え:

テーブルには各行の一意の識別子が含まれているため、簡単なアプローチを採用できます:

<code class="sql">delete x
from myTable x
join myTable z on x.subscriberEmail = z.subscriberEmail
where x.id > z.id</code>

説明:

このクエリは、一意の ID の存在を利用して元のレコードを識別します。 subscriberEmail フィールドを使用してテーブルをそれ自体に対して結合し、ID に基づいてフィルタリングすることにより、重複レコードを元のレコードよりも高い ID を持つレコードとして効果的にタグ付けします。これらのタグ付けされた重複は削除されます。

クエリのパフォーマンスをさらに向上させるには、subscriberEmail 列にインデックスを使用することを検討してください。これにより、このフィールドに基づいてレコードを迅速に取得できるようになり、クエリがより効率的になります。また、subscriberEmail 列を UNIQUE インデックス付き列として宣言することで、今後重複エントリが挿入されるのを防ぐこともできます。

以上がテーブル内の元のエントリを保持しながら重複行を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。