Doppelte Zeilen eliminieren und gleichzeitig die Originalität bewahren
Frage:
Die Aufrechterhaltung der Datenintegrität ist von entscheidender Bedeutung. und häufig können doppelte Einträge aus Benutzereingaben entstehen. In einem Szenario, in dem doppelte Einträge basierend auf einem bestimmten Feld vorhanden sind, z. B. „subscriberEmail“, besteht das Ziel darin, diese Duplikate zu beseitigen und nur den ursprünglichen Eintrag beizubehalten. Wie kann dies effizient erreicht werden, ohne auf Tabellenaustausch zurückgreifen zu müssen?
Antwort:
Da die Tabelle eindeutige Bezeichner für jede Zeile enthält, kann ein einfacher Ansatz gewählt werden:
<code class="sql">delete x from myTable x join myTable z on x.subscriberEmail = z.subscriberEmail where x.id > z.id</code>
Erklärung:
Diese Abfrage nutzt die Existenz eindeutiger IDs, um die Originaldatensätze zu identifizieren. Indem die Tabelle mithilfe des Felds „subscriberEmail“ und der Filterung anhand der IDs mit sich selbst verknüpft wird, markiert sie doppelte Datensätze effektiv als solche mit höheren IDs als das Original. Diese markierten Duplikate werden dann gelöscht.
Um die Abfrageleistung weiter zu verbessern, sollten Sie die Verwendung eines Index für die Spalte subscriberEmail in Betracht ziehen. Dies gewährleistet einen schnellen Abruf von Datensätzen basierend auf diesem Feld und macht die Abfrage effizienter. Durch die Deklaration der subscriberEmail-Spalte als EINZIGARTIGE indizierte Spalte kann auch verhindert werden, dass in Zukunft doppelte Einträge eingefügt werden.
Das obige ist der detaillierte Inhalt vonWie eliminiere ich doppelte Zeilen und behalte gleichzeitig den ursprünglichen Eintrag in einer Tabelle bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!