Entfernen doppelter Zeilen unter Beibehaltung der ältesten Übermittlungen
Um doppelte Zeilen basierend auf dem Feld „subscriberEmail“ zu entfernen und gleichzeitig die ursprüngliche Übermittlung beizubehalten, führen Sie die folgenden Schritte aus :
<code class="sql">delete x
from myTable x
join myTable z on x.subscriberEmail = z.subscriberEmail
where x.id > z.id;</code>
Nach dem Login kopieren
Erklärung:
- Diese Abfrage verknüpft die Tabelle mithilfe der Join-Klausel mit sich selbst. Dadurch werden zwei Instanzen der Tabelle mit dem Alias „x“ und „z“ erstellt.
- Die where-Klausel vergleicht die ID-Werte der beiden Instanzen. Zeilen in Instanz „x“ mit einer ID, die größer als die entsprechende Zeile in Instanz „z“ ist, stellen doppelte Übermittlungen dar.
- Die Löschanweisung identifiziert diese doppelten Zeilen in Instanz „x“ und entfernt sie aus der Tabelle.
- Das Ergebnis ist eine Tabelle mit eindeutigen Abonnenten-E-Mails, in der für jede E-Mail-Adresse nur die ursprüngliche Einreichung (mit der niedrigsten ID) übrig bleibt.
Zusätzliche Hinweise:
- Um künftige Duplikate zu verhindern, sollten Sie in Betracht ziehen, einen UNIQUE-Index für die Spalte subscriberEmail zu erstellen.
- Die obige Abfrage kann durch die Kombination der Join- und Where-Klauseln vereinfacht werden:
<code class="sql">delete x
from myTable x
join myTable z
on x.subscriberEmail = z.subscriberEmail and x.id > z.id;</code>
Nach dem Login kopieren
Das obige ist der detaillierte Inhalt vonWie entferne ich doppelte Zeilen basierend auf „subscriberEmail' und behalte dabei die älteste Übermittlung bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!