Heim >Datenbank >MySQL-Tutorial >Wie kann ich doppelte Zeilen in PostgreSQL löschen und gleichzeitig eine einzelne Kopie beibehalten?

Wie kann ich doppelte Zeilen in PostgreSQL löschen und gleichzeitig eine einzelne Kopie beibehalten?

Linda Hamilton
Linda HamiltonOriginal
2025-01-06 10:05:40150Durchsuche

How Can I Delete Duplicate Rows in PostgreSQL While Preserving a Single Copy?

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!

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