Entfernen doppelter Zeilen unter Beibehaltung der ältesten Einträge
In Ihrer Tabelle mit Benutzerübermittlungsdaten haben sich basierend auf dem Feld subscriberEmail doppelte Einträge angesammelt. Um die Datenintegrität sicherzustellen, möchten Sie diese doppelten Zeilen entfernen und gleichzeitig die ursprünglichen Übermittlungen beibehalten.
Lösung:
<code class="sql">delete x
from myTable x
join myTable z on x.subscriberEmail = z.subscriberEmail
where x.id > z.id</code>
Erklärung:
-
Selbstverknüpfung: Die Abfrage führt eine Selbstverknüpfung für die Tabelle „myTable“ durch und erstellt zwei separate Instanzen der Tabelle mit dem Alias „x“ und „z“.
-
Vergleichsbedingung: Der Join gleicht Zeilen von „x“ und „z“ basierend auf der Spalte „subscriberEmail“ ab und vergleicht effektiv jede Zeile mit allen anderen Zeilen.
-
Filterung : Die where-Klausel wählt Zeilen aus „x“ aus, in denen der ID-Spaltenwert größer ist als der ID-Wert in der entsprechenden Zeile in „z“. Dadurch werden doppelte Zeilen mit höheren ID-Werten identifiziert.
-
Löschen: Die Löschanweisung entfernt die in „x“ identifizierten doppelten Zeilen, sodass nur die ursprünglichen Übermittlungen übrig bleiben.
Zusätzliche Überlegungen:
Um zukünftige doppelte Einfügungen zu verhindern, sollten Sie die Erstellung eines UNIQUE-Index für die Spalte subscriberEmail in Betracht ziehen. Dadurch wird die Eindeutigkeit der E-Mail-Adressen in der Tabelle erzwungen.
Das obige ist der detaillierte Inhalt vonWie entferne ich doppelte Zeilen in einer Tabelle und behalte dabei den ältesten Eintrag 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