1. ホーム
  2. mysql

[解決済み] MySQLで重複した行を削除する

2022-03-23 03:39:03

質問

以下のフィールドを持つテーブルがあります。

id (Unique)
url (Unique)
title
company
site_id

ここで、同じ行を削除する必要があります。 title, company and site_id . これを実現する一つの方法として、以下のSQLとスクリプト( PHP ):

SELECT title, site_id, location, id, count( * ) 
FROM jobs
GROUP BY site_id, company, title, location
HAVING count( * ) >1

このクエリを実行した後、サーバーサイドのスクリプトを使用して重複を削除することができます。

しかし、私はこれがSQLクエリを使用してのみ行うことができるかどうかを知りたいです。

どのように解決するのですか?

本当に簡単なのは UNIQUE のインデックスは3つのカラムで構成されています。 このとき ALTER ステートメントに IGNORE キーワードを使用します。 こんな感じで。

ALTER IGNORE TABLE jobs
ADD UNIQUE INDEX idx_name (site_id, title, company);

これで、重複する行がすべて削除されます。 付加的な利点として、将来の INSERTs が重複している場合はエラーになります。 いつものように、このようなことを実行する前に、バックアップを取ることをお勧めします...