Effizientes Entfernen doppelter Zeilen mit Ausnahme der frühesten Instanz
Problem:
Sie haben eine Tabelle Enthält Daten mit zahlreichen doppelten Einträgen, die durch Benutzereingaben verursacht wurden. Ihr Ziel besteht darin, diese doppelten Zeilen basierend auf dem Feld „subscriberEmail“ zu eliminieren und nur den frühesten übermittelten Datensatz übrig zu lassen. Mit anderen Worten: Sie möchten alle doppelten E-Mails identifizieren und ihre entsprechenden Zeilen löschen, während die ursprüngliche Übermittlung erhalten bleibt.
Lösung:
1. Self-Join-Ansatz:
Anstatt Tabellen auszutauschen, können Sie einen Self-Join nutzen, um Ihr Ziel zu erreichen:
<code class="sql">delete x from myTable x join myTable z on x.subscriberEmail = z.subscriberEmail where x.id > z.id</code>
In dieser Abfrage:
2. Zusätzliche Überlegungen:
Um zukünftige doppelte Einfügungen zu verhindern, sollten Sie die Erstellung eines EINZIGARTIGEN INDEX für die Spalte „subscriberEmail“ in Betracht ziehen.
Vorteile:
Dieser Ansatz entfernt effizient doppelte Zeilen, ohne dass der Aufwand für die Erstellung einer temporären Tabelle anfällt. Es nutzt die vorhandene Tabellenstruktur und bewahrt die eindeutige Identität jeder Zeile basierend auf dem ID-Feld.
Das obige ist der detaillierte Inhalt vonWie entferne ich effizient doppelte Zeilen mit Ausnahme der frühesten Instanz?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!