ホームページ >データベース >mysql チュートリアル >SQL クエリのみを使用して MySQL で重複行を削除する方法
外部スクリプトを使用せずに 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 サイトの他の関連記事を参照してください。