Heim >Datenbank >MySQL-Tutorial >Wie lösche ich doppelte Datensätze in MySQL und behalte gleichzeitig den neuesten Stand?

Wie lösche ich doppelte Datensätze in MySQL und behalte gleichzeitig den neuesten Stand?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-16 12:50:03260Durchsuche

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

Löschen doppelter Datensätze in MySQL unter Beibehaltung der neuesten Version

In einer Datenbank stößt man häufig auf doppelte Datensätze, insbesondere in Tabellen mit eindeutigen Bezeichnern . In MySQL kann es vorkommen, dass E-Mails dupliziert werden und Sie nur die neueste E-Mail mit der neuesten ID behalten möchten.

Um dieses Problem zu lösen, können wir die folgenden Schritte ausführen:

  1. Doppelte E-Mails identifizieren: Bestimmen Sie die E-Mails, die mehr als einmal in der Tabelle erscheinen.
  2. Finden Sie die neueste ID für jede doppelte E-Mail: Für jede E-Mail duplizieren, rufen Sie die höchste ID ab, die die letzte Einfügung darstellt.
  3. Duplikate mit älteren IDs löschen:Entfernen Sie alle Duplikate mit Ausnahme der zuletzt im vorherigen Schritt identifizierten Duplikate.

Implementierung:

Betrachten Sie die folgende MySQL-Tabelle namens test mit den Spalten id und email:

| id | email |
|---|---|
| 1 | aaa |
| 2 | bbb |
| 3 | ccc |
| 4 | bbb |
| 5 | ddd |
| 6 | eee |
| 7 | aaa |
| 8 | aaa |
| 9 | eee |

Um doppelte E-Mails zu löschen und die neuesten zu behalten können wir die folgende Abfrage ausführen:

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;

Diese Abfrage ruft die neuesten IDs für doppelte E-Mails ab und entfernt alle Duplikate mit älteren IDs. Nach dem Ausführen der Abfrage sieht die Testtabelle wie folgt aus:

| id | email |
|---|---|
| 3 | ccc |
| 4 | bbb |
| 5 | ddd |
| 8 | aaa |
| 9 | eee |

Nur ​​die neuesten Duplikate mit den höchsten IDs wurden beibehalten, wodurch die Anforderung erfüllt wird, die neuesten E-Mail-Adressen in der Tabelle beizubehalten.

Das obige ist der detaillierte Inhalt vonWie lösche ich doppelte Datensätze in MySQL und behalte gleichzeitig den neuesten Stand?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn