Löschen Sie Doppelte E-Mail-Adressen aus der Tabelle in MYSQL
Ich habe eine Tabelle mit Spalten für ID
, firstname
, lastname
, address
, email
und so weiter.
Gibt es eine Möglichkeit zu löschen, doppelte email
- Adressen aus der TABELLE?
Zusätzliche Informationen (aus den Kommentaren):
Wenn es zwei Zeilen mit der gleichen email
Adresse hätte man eine normale firstname
und lastname
aber die anderen hätte 'Instant' in der firstname
. Deshalb kann ich zwischen Ihnen zu unterscheiden. Ich will einfach nur zu löschen, der mit Vornamen 'instant'.
Beachten Sie, dass einige Datensätze, in denen die firstname='Instant'
haben nur 1 email
- Adresse. Ich will nicht löschen, nur eine eindeutige E-Mail-Adresse, so kann ich nicht einfach alles löschen, wo firstname='Instant'
.
Bitte helfen Sie mir.
- Was machst du mit dem rest der Zeile? Wenn man zwei Vornamen mit der gleichen e-mail-Adresse, was tun Sie? Tun Sie, löschen der doppelten e-mails, oder nur eine? Wie entscheiden Sie, welche?
- Wenn es zwei gleiche E-Mail-Adressen hätte man normale vor-und Nachname, aber andere müssten "sofort" in den ersten Namen. Deshalb kann ich zwischen Ihnen zu unterscheiden. Ich will einfach nur das löschen der einen mit dem ersten Namen "instant".
- Warum gehst du nicht einfach
delete where firstname='Instant'
? - Aber auf einige Datensätze der " firstname=Sofortige, es wird nur 1 E-Mail-Adresse und die will ich nicht löschen, nur eine eindeutige E-Mail-Adresse. Es bedeutet nicht, dass für jede firstname=Instant werde ich zwei E-Mail-Adressen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß nicht, ob dies funktioniert in MYSQL (ich habe nicht verwendet es)... aber Sie sollten in der Lage sein, etwas zu tun, wie die folgenden Ausschnitte.
Ich würde vorschlagen, Sie Sie ausführen, um ein Gefühl dafür zu bekommen, wenn die richtigen Daten ausgewählt werden. Wenn es funktioniert, dann wollen Sie wahrscheinlich zu erstellen, die eine Einschränkung für die Spalte.
Bekommen alle die doppelten e-mail-Adressen:
Bestimmen dann die ID aus, die gibt es:
Dann, endlich, löschen Sie die Zeilen, basierend auf dem obigen und andere Einschränkungen:
Dieser hält die Unterste, erste eingefügte id ' s für jede E-Mail.
Während MiPnamic die Antwort ist im wesentlichen richtig, es löst nicht das problem, welchen Datensatz Sie behalten und welche du wegwerfen (und wie Sortieren Sie Verwandte Datensätze). Die kurze Antwort ist, dass dies nicht geschehen kann, programmatisch.
Gegeben eine Abfrage wie diese:
macht es noch schlimmer - da Sie potentiell die Auswahl eine Mischung der Felder die doppelten Zeilen. Sie würde etwas tun müssen wie:
Um einen eindeutigen Satz von vorhandenen Zeilen. Natürlich, Sie noch müssen, zu Sortieren, alle lreated records (Tipp - das sind die IDs ni Tabelle Kunden nicht zurückgegeben von der Abfrage oben).