Heim > Datenbank > MySQL-Tutorial > Wie entferne ich doppelte E-Mail-Adressen in MySQL und behalte dabei den neuesten Datensatz bei?

Wie entferne ich doppelte E-Mail-Adressen in MySQL und behalte dabei den neuesten Datensatz bei?

Mary-Kate Olsen
Freigeben: 2024-11-15 21:51:02
Original
677 Leute haben es durchsucht

How to Remove Duplicate Email Addresses in MySQL While Keeping the Most Recent Record?

MySQL: Doppelte Datensätze löschen und gleichzeitig die aktuellsten beibehalten

Frage: Wie kann ich doppelte E-Mail-Adressen in entfernen? eine MySQL-Tabelle erstellen und dabei die aktuellste Tabelle basierend auf dem eindeutigen ID-Feld beibehalten?

Lösung:

Um dies zu erreichen, führen Sie die folgenden Schritte aus:

  1. Doppelte E-Mails identifizieren:

    • Rufen Sie eine Liste aller doppelten E-Mail-Adressen mithilfe der Abfrage ab:

      SELECT email
      FROM test
      GROUP BY email
      HAVING COUNT(*) > 1;
      Nach dem Login kopieren
  2. Finden Sie die neueste ID für jedes Duplikat:

    • Bestimmen Sie die neueste ID, die jeder doppelten E-Mail zugeordnet ist, mithilfe der Abfrage:

      SELECT MAX(id) AS lastID, email
      FROM test
      WHERE email IN (
        SELECT email
        FROM test
        GROUP BY email
        HAVING COUNT(*) > 1
      )
      GROUP BY email;
      Nach dem Login kopieren
  3. Älteste Duplikate löschen:

    • Führen Sie einen DELETE-Vorgang aus, um Duplikate zu entfernen E-Mails mit einer ID kleiner als die neueste:

      DELETE test
      FROM test
      INNER JOIN (
        SELECT MAX(id) AS lastID, email
        FROM test
        WHERE email IN (
          SELECT email
          FROM test
          GROUP BY email
          HAVING COUNT(*) > 1
        )
        GROUP BY email
      ) duplic ON duplic.email = test.email
      WHERE test.id < duplic.lastID;
      Nach dem Login kopieren

Optimierte Version:

Die folgende optimierte Version liefert das gleiche Ergebnis und verbessert gleichzeitig möglicherweise die Leistung:

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;
Nach dem Login kopieren

Diese überarbeitete DELETE-Anweisung konzentriert sich auf die Beseitigung der ältesten Duplikate.

Zusätzliche Option:

Alternativ können Sie diese von Rene Limon bereitgestellte Abfrage verwenden:

DELETE FROM test
WHERE id NOT IN (
  SELECT MAX(id)
  FROM test
  GROUP BY email);
Nach dem Login kopieren

Dieser Ansatz behält die aktuellste doppelte E-Mail-Adresse basierend auf der maximalen ID bei.

Das obige ist der detaillierte Inhalt vonWie entferne ich doppelte E-Mail-Adressen in MySQL und behalte dabei den neuesten Datensatz bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage