Heim >Datenbank >MySQL-Tutorial >Wie kann ich doppelte Zeilen in PostgreSQL löschen und gleichzeitig eine einzelne Kopie beibehalten?
Beibehalten einer einzelnen Kopie: Löschen nicht identischer doppelter Zeilen
Die Aufrechterhaltung der Datenintegrität erfordert häufig das Entfernen redundanter Datensätze aus Datenbanken. In bestimmten Szenarien kann es jedoch erforderlich sein, eine Kopie jeder Gruppe doppelter Zeilen aufzubewahren. Dieser Artikel befasst sich mit der Herausforderung, alle bis auf eine Zeile aus einer Reihe von Duplikaten in PostgreSQL zu löschen.
Lösung: Selektives Löschen mithilfe eindeutiger Bezeichner
Die in der Lösung bereitgestellte Abfrage nutzt das Konzept der Gruppierung und Auswahl des minimalen (oder maximalen) Werts eines eindeutigen Kennungsfelds innerhalb jeder Gruppe von Duplikaten. Indem Zeilen mit dieser minimalen (oder maximalen) Kennung vom Löschvorgang ausgeschlossen werden, kann eine einzelne Kopie jeder eindeutigen Zeile erhalten bleiben.
Die folgende Abfrage veranschaulicht diesen Ansatz:
DELETE FROM foo WHERE id NOT IN (SELECT min(id) FROM foo GROUP BY hash);
In Bei dieser Abfrage stellt das Hash-Feld ein eindeutiges Merkmal oder eine Kombination von Merkmalen dar, die die Duplikatsätze definieren. Durch Auswahl des minimalen ID-Werts aus jeder Gruppe identifiziert die Abfrage die Zeile, die beibehalten wird, und schließt die verbleibenden doppelten Zeilen vom Löschen aus.
Das obige ist der detaillierte Inhalt vonWie kann ich doppelte Zeilen in PostgreSQL löschen und gleichzeitig eine einzelne Kopie beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!