ホームページ >データベース >mysql チュートリアル >SQL クエリを使用して MySQL テーブルから重複行を削除するにはどうすればよいですか?

SQL クエリを使用して MySQL テーブルから重複行を削除するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-24 02:24:14791ブラウズ

How Can I Remove Duplicate Rows from MySQL Tables Using SQL Queries?

SQL を使用して MySQL テーブルから重複行を効率的に削除する

MySQL の重複行の削除は SQL を使用して直接実行できるため、外部スクリプトの必要がなくなります。 1 つの方法では、UNIQUE インデックスを利用します。 ただし、このアプローチは MySQL 5.7 以降のバージョンでは時代遅れであることに注意することが重要です。

メソッド (MySQL 5.7 では非推奨):

このメソッドは ALTER IGNORE TABLE を使用して一意のインデックスを追加し、重複を効果的に削除します。

  1. ALTER ステートメントを作成します。 ALTER IGNORE TABLE ステートメントを作成して、重複行を識別する列に UNIQUE インデックスを追加します。たとえば、列 idurltitlecompanysite_id があるテーブルの場合、コマンドは次のようになります:
<code class="language-sql">ALTER IGNORE TABLE your_table_name
ADD UNIQUE INDEX idx_name (column1, column2, column3);</code>
  1. ステートメントを実行します: このステートメントを実行すると、UNIQUE インデックスが作成されます。 IGNORE キーワードは、既存の重複からのエラーをサイレントに破棄することで処理します。

説明:

UNIQUE インデックスは、指定された列に一意の値のみが含まれることを保証します。 IGNORE を使用してこのインデックスを追加すると、既存の重複行が削除されます。

代替方法 (MySQL 5.7 で推奨):

MySQL 5.7 以降のバージョンでは、より堅牢でサポートされている方法が推奨されます。 これらには通常、サブクエリで DELETE ステートメントを使用して重複を特定して削除することが含まれます。 これらの方法はより複雑ですが、互換性と信頼性が向上します。 (これらの代替方法の具体例は、必要な重複識別基準に基づいて提供する必要があります。)

注意:

データを変更する操作を実行する前に、必ずデータベースをバックアップしてください。 SQL クエリが正しく構築されていないと、データ損失が発生する可能性があります。

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

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