MySQL で最新のレコードを保持したまま重複レコードを削除するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-16 12:50:03
オリジナル
203 人が閲覧しました

How to Delete Duplicate Records in MySQL While Keeping the Latest?

最新のレコードを保持しながら MySQL の重複レコードを削除する

データベースでは、特に一意の識別子を持つテーブルで重複レコードが発生することがよくあります。 。 MySQL では、電子メールが重複し、最新の ID を持つ最新の電子メールのみを保持したいという状況に直面することがあります。

この問題を解決するには、次の手順を実行できます。

  1. 重複するメールの特定: に複数回表示されるメールを特定します。テーブル。
  2. 各重複電子メールの最新 ID を検索します。 重複電子メールごとに、最新の挿入を表す最大の ID を取得します。
  3. 削除古い ID の重複: 前の手順で特定された最新のものを除くすべての重複を削除します。 step.

実装:

列 id と email を持つ test という名前の次の MySQL テーブルを考えます:

| id | email |
|---|---|
| 1 | aaa |
| 2 | bbb |
| 3 | ccc |
| 4 | bbb |
| 5 | ddd |
| 6 | eee |
| 7 | aaa |
| 8 | aaa |
| 9 | eee |
ログイン後にコピー

重複を削除するにはメールを保存し、最新のメールを保持するには、次のことを実行できます。 query:

DELETE test
FROM test
INNER JOIN (
  SELECT MAX(id) AS lastId, email
  FROM test
  GROUP BY email
  HAVING COUNT(*) > 1
) duplic ON duplic.email = test.email
WHERE test.id < duplic.lastId;
ログイン後にコピー

このクエリは、重複電子メールの最新の ID を取得し、古い ID を持つすべての重複を削除します。クエリを実行すると、テスト テーブルは次のように表示されます。

| id | email |
|---|---|
| 3 | ccc |
| 4 | bbb |
| 5 | ddd |
| 8 | aaa |
| 9 | eee |
ログイン後にコピー

最も高い ID を持つ最新の重複のみが保存され、テーブル内の最新の電子メール アドレスを維持するという要件を満たしています。

以上がMySQL で最新のレコードを保持したまま重複レコードを削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート