Seite 1 von 1

MySQL - doppelte Einträge entfernen, aber nur die neueren

Verfasst: 13.02.2007 22:06
von mgutt
Hallo,

ich habe mehrere Tabellen verschmolzen und dabei habe ich doppelte Einträge. Nun ist das so, dass ich die neuen Daten jetzt verwenden möchte. Aber nur dann, wenn diese nicht doppelt sind.

Daher möchte ich doppelte Einträge entfernen. Es dürfen aber nur neuere Einträge gelöscht werden (vielleicht an Hand der ID? Die ist auto_increment, also neuere haben eine höhere ID).

EDIT:

Ich bin auf die Abfrage gestoßen:

Code: Alles auswählen

CREATE TEMPORARY TABLE doppel SELECT count( * ) AS counter, max( id ) AS id, email
FROM emails
GROUP BY email
HAVING counter >1;

SELECT * 
FROM doppel 
Ich denke das bringt mich weiter.

Gruß

EDIT2:
Das müsste es dann sein denke ich:

Code: Alles auswählen

CREATE TEMPORARY TABLE doppel SELECT count( * ) AS counter, min( id ) AS id, email
FROM emails
GROUP BY email
HAVING counter >1;

DELETE emails FROM emails, doppel
WHERE emails.email = doppel.email
AND emails.id != doppel.id;