Beibehalten einer einzelnen Kopie: Löschen doppelter PostgreSQL-Zeilen
Im Bereich der Datenverwaltung kann das Auffinden doppelter Zeilen eine Herausforderung darstellen. PostgreSQL, ein beliebtes relationales Datenbankverwaltungssystem, bietet verschiedene Möglichkeiten, mit solchen Situationen umzugehen. Ein spezifisches Szenario entsteht, wenn Benutzer doppelte Zeilen löschen und gleichzeitig eine einzelne Kopie aus jedem Satz beibehalten möchten.
Abfragelösung
Um dies zu erreichen, kann eine SQL-Abfrage verwendet werden . Die folgende Abfrage folgt den im bereitgestellten Artikel beschriebenen Schritten:
DELETE FROM foo WHERE id NOT IN (SELECT min(id) --or max(id) FROM foo GROUP BY hash)
Erläuterung
Diese Abfrage verwendet eine Unterabfrage, um den minimalen oder maximalen ID-Wert für jede Gruppe zu identifizieren von doppelten Zeilen. Die Hash-Spalte stellt ein Kriterium dar, anhand dessen die Duplizierung ermittelt wird. Durch den Ausschluss der IDs, die nicht mit dem Minimum oder Maximum übereinstimmen, behält die Abfrage eine einzelne Kopie jedes Duplikatsatzes bei, während der Rest gelöscht wird.
Alternative Abfrage
Ein alternativer Ansatz beinhaltet die Verwendung der Funktion ROW_NUMBER() OVER():
DELETE FROM foo AS f WHERE ROW_NUMBER() OVER (PARTITION BY hash ORDER BY id) > 1
Diese Abfrage weist jeder Zeile eine Zeilennummer zu, Partitioniert nach der Hash-Spalte und sortiert nach der ID-Spalte in aufsteigender Reihenfolge. Zeilen mit Zeilennummern größer als 1 (d. h. Duplikate) werden dann gelöscht.
Fazit
Durch die Implementierung einer der vorgestellten Abfragen in PostgreSQL können Benutzer Duplikate effektiv löschen Zeilen, während von jedem Satz eine einzelne Kopie erhalten bleibt. Dieser Ansatz ermöglicht die Entfernung redundanter Daten unter Beibehaltung der Integrität des ursprünglichen Datensatzes.
Das obige ist der detaillierte Inhalt vonWie lösche ich doppelte PostgreSQL-Zeilen und behalte gleichzeitig eine Kopie?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!