Maison >base de données >tutoriel mysql >Comment supprimer efficacement les lignes en double dans Netezza sans identifiant unique ?

Comment supprimer efficacement les lignes en double dans Netezza sans identifiant unique ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-12 11:27:41476parcourir

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

Supprimez efficacement les lignes en double sans identifiants uniques dans Netezza

Lorsque vous traitez de grandes tables contenant des lignes en double, trouver le moyen le plus efficace de les supprimer peut s'avérer difficile. Même s'il a été prouvé que cette requête fonctionne dans SQL, qu'en est-il dans Netezza ?

Requête SQL brute

<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>

Solution Netezza

L'instruction DELETE après la clause WITH n'est pas compatible avec Netezza. Veuillez envisager la solution suivante en utilisant le mot-clé USING :

<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>

Aperçu des résultats

Pour consulter les enregistrements avant de les supprimer, remplacez DELETE par SELECT * et USING par une virgule, comme ceci :

<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>

Notes de performances

Si peu de doublons sont attendus, cette solution est plus performante que la solution utilisant la clause NOT IN (...), qui génère un grand nombre de lignes dans la sous-requête. De plus, si la colonne clé contient des valeurs NULL, utilisez COALESCE() pour gérer la comparaison, par exemple :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn