Heim >Datenbank >MySQL-Tutorial >Wie eliminiere ich doppelte Zeilen und behalte gleichzeitig den ursprünglichen Eintrag in einer Tabelle bei?

Wie eliminiere ich doppelte Zeilen und behalte gleichzeitig den ursprünglichen Eintrag in einer Tabelle bei?

Barbara Streisand
Barbara StreisandOriginal
2024-10-31 19:12:29767Durchsuche

How to Eliminate Duplicate Rows While Preserving the Original Entry in a Table?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn