Heim >Datenbank >MySQL-Tutorial >Wie behalte ich nur eine Kopie doppelter Zeilen in PostgreSQL?

Wie behalte ich nur eine Kopie doppelter Zeilen in PostgreSQL?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-06 10:15:43765Durchsuche

How to Keep Only One Copy of Duplicate Rows in PostgreSQL?

Eine Kopie doppelter Zeilen in Postgres beibehalten

Beim Umgang mit doppelten Daten ist es oft notwendig, die Redundanzen zu entfernen und gleichzeitig mindestens eine Kopie beizubehalten Instanz jedes Duplikatsatzes. In Postgres kann dies durch den folgenden Ansatz erreicht werden:

Um doppelte Zeilen zu löschen und gleichzeitig eine einzelne Kopie beizubehalten, können wir die folgende Abfrage verwenden:

DELETE FROM foo
WHERE id NOT IN (
  SELECT MIN(id)  -- or MAX(id) for the latest copy
  FROM foo
  GROUP BY hash
);

In dieser Abfrage:

  • foo ist die Tabelle mit den doppelten Zeilen.
  • id ist der Primärschlüssel Spalte.
  • Hash ist eine Spalte oder ein Ausdruck, der doppelte Zeilen identifiziert (z. B. eine eindeutige Kombination von Spalten oder eine Hash-Funktion).

Durch Verwendung von MIN(id) oder MAX( id) innerhalb der Unterabfrage stellen wir sicher, dass nur die älteste oder neueste Kopie jedes Duplikatsatzes beibehalten wird.

Dieser Ansatz stellt sicher, dass mindestens eine Kopie jeder Duplikatzeile vorhanden ist in der Tabelle beibehalten, während unnötige Duplikate entfernt werden.

Das obige ist der detaillierte Inhalt vonWie behalte ich nur eine Kopie doppelter Zeilen in PostgreSQL?. 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