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:
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!