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

      1

      2

      3

      4

      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:

      1

      2

      3

      4

      5

      6

      7

      8

      9

      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:

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      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:

1

2

3

4

5

6

7

8

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:

1

2

3

4

5

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!

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