ホームページ >データベース >mysql チュートリアル >SQL クエリのみを使用して MySQL で重複行を削除する方法

SQL クエリのみを使用して MySQL で重複行を削除する方法

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

How to Remove Duplicate Rows in MySQL Using Only SQL Queries?

外部スクリプトを使用せずに MySQL の重複行を削除します

場合によっては、特定の列の組み合わせに基づいて、MySQL テーブル内の重複行を削除する必要がある場合があります。以下では、サーバー側のスクリプトを回避し、SQL クエリのみを使用してこれを実現する方法を説明します。

背景

最初の質問で述べたように、テーブルには「id」、「url」、「title」、「company」、「site_id」などの複数の列が含まれています。目標は、「title」、「company」、および「site_id」が同じ値を持つ行を削除することです。

解決策

重複行を削除する効果的な方法は、これら 3 つの列に対して UNIQUE インデックスを使用することです。このようなインデックスを作成するための構文は次のとおりです:

<code class="language-sql">ALTER IGNORE TABLE jobs ADD UNIQUE INDEX idx_name (site_id, title, company);</code>

ステートメントではキーワード「IGNORE」が使用されていることに注意してください。これにより、インデックスの作成時に重複行を無視するように MySQL に指示されます。これは、これらの重複行がテーブルから削除されることを意味します。

追加特典

既存の重複行を削除するだけでなく、UNIQUE インデックスを追加すると、今後重複行が挿入されなくなります。 「site_id」、「title」、「company」の組み合わせがすでに存在する行を挿入しようとすると、エラーが発生します。

注:

この機能は MySQL 5.7 以降では削除されていることに注意してください。したがって、このソリューションはこれらの MySQL バージョンでは動作しなくなりました。

以上がSQL クエリのみを使用して MySQL で重複行を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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