ホームページ >データベース >mysql チュートリアル >SQL クエリを使用して MySQL テーブルから重複行を削除するにはどうすればよいですか?
MySQL の重複行の削除は SQL を使用して直接実行できるため、外部スクリプトの必要がなくなります。 1 つの方法では、UNIQUE インデックスを利用します。 ただし、このアプローチは MySQL 5.7 以降のバージョンでは時代遅れであることに注意することが重要です。
メソッド (MySQL 5.7 では非推奨):
このメソッドは ALTER IGNORE TABLE
を使用して一意のインデックスを追加し、重複を効果的に削除します。
ALTER
ステートメントを作成します。 ALTER IGNORE TABLE
ステートメントを作成して、重複行を識別する列に UNIQUE インデックスを追加します。たとえば、列 id
、url
、title
、company
、site_id
があるテーブルの場合、コマンドは次のようになります:<code class="language-sql">ALTER IGNORE TABLE your_table_name ADD UNIQUE INDEX idx_name (column1, column2, column3);</code>
IGNORE
キーワードは、既存の重複からのエラーをサイレントに破棄することで処理します。説明:
UNIQUE インデックスは、指定された列に一意の値のみが含まれることを保証します。 IGNORE
を使用してこのインデックスを追加すると、既存の重複行が削除されます。
代替方法 (MySQL 5.7 で推奨):
MySQL 5.7 以降のバージョンでは、より堅牢でサポートされている方法が推奨されます。 これらには通常、サブクエリで DELETE
ステートメントを使用して重複を特定して削除することが含まれます。 これらの方法はより複雑ですが、互換性と信頼性が向上します。 (これらの代替方法の具体例は、必要な重複識別基準に基づいて提供する必要があります。)
注意:
データを変更する操作を実行する前に、必ずデータベースをバックアップしてください。 SQL クエリが正しく構築されていないと、データ損失が発生する可能性があります。
以上がSQL クエリを使用して MySQL テーブルから重複行を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。