最新のレコードを保持しながら MySQL の重複レコードを削除する
データベースでは、特に一意の識別子を持つテーブルで重複レコードが発生することがよくあります。 。 MySQL では、電子メールが重複し、最新の ID を持つ最新の電子メールのみを保持したいという状況に直面することがあります。
この問題を解決するには、次の手順を実行できます。
実装:
列 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 サイトの他の関連記事を参照してください。