Heim > Datenbank > MySQL-Tutorial > Wie lösche ich effizient doppelte Zeilen in Netezza ohne eindeutige Kennung?

Wie lösche ich effizient doppelte Zeilen in Netezza ohne eindeutige Kennung?

Barbara Streisand
Freigeben: 2025-01-12 11:27:41
Original
515 Leute haben es durchsucht

How to Efficiently Delete Duplicate Rows in Netezza Without a Unique Identifier?

Effizientes Entfernen doppelter Zeilen ohne eindeutige Kennungen in Netezza

Beim Umgang mit großen Tabellen, die doppelte Zeilen enthalten, kann es schwierig sein, den effizientesten Weg zu finden, diese zu entfernen. Während diese Abfrage nachweislich in SQL funktioniert, wie sieht es mit Netezza aus?

Raw SQL-Abfrage

<code class="language-sql">WITH TempEmp AS
(
SELECT name, ROW_NUMBER() OVER(PARTITION by name, address, zipcode ORDER BY name) AS duplicateRecCount
FROM mytable
)
DELETE FROM TempEmp
WHERE duplicateRecCount > 1;</code>
Nach dem Login kopieren

Netezza-Lösung

Die DELETE-Anweisung nach der WITH-Klausel ist nicht mit Netezza kompatibel. Bitte erwägen Sie die folgende Lösung mit dem USING-Schlüsselwort:

<code class="language-sql">DELETE FROM table_with_dups T1
USING table_with_dups T2
WHERE T1.ctid < T2.ctid
AND T1.name = T2.name
AND T1.address = T2.address
AND T1.zipcode = T2.zipcode;</code>
Nach dem Login kopieren

Vorschau der Ergebnisse

Um Datensätze vor dem Löschen zu überprüfen, ersetzen Sie DELETE durch SELECT * und USING durch ein Komma, etwa so:

<code class="language-sql">SELECT * FROM table_with_dups T1, table_with_dups T2
WHERE T1.ctid < T2.ctid
AND T1.name = T2.name
AND T1.address = T2.address
AND T1.zipcode = T2.zipcode;</code>
Nach dem Login kopieren

Leistungshinweise

Wenn nur wenige Duplikate erwartet werden, ist diese Lösung leistungsfähiger als die Lösung mit der NOT IN (...)-Klausel, die eine große Anzahl von Zeilen in der Unterabfrage generiert. Wenn die Schlüsselspalte außerdem NULL-Werte enthält, verwenden Sie COALESCE(), um den Vergleich durchzuführen, zum Beispiel:

<code class="language-sql">AND COALESCE(T1.col_with_nulls, '[NULL]') = COALESCE(T2.col_with_nulls, '[NULL]')</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie lösche ich effizient doppelte Zeilen in Netezza ohne eindeutige Kennung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage