Maison >base de données >tutoriel mysql >Comment supprimer les lignes PostgreSQL en double tout en conservant une copie ?

Comment supprimer les lignes PostgreSQL en double tout en conservant une copie ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-06 10:03:42769parcourir

How to Delete Duplicate PostgreSQL Rows While Keeping One Copy?

Conserver une seule copie : supprimer les lignes PostgreSQL en double

Dans le domaine de la gestion des données, rencontrer des lignes en double peut poser un défi. PostgreSQL, un système de gestion de bases de données relationnelles populaire, propose diverses options pour gérer de telles situations. Un scénario spécifique se produit lorsque les utilisateurs cherchent à supprimer les lignes en double tout en préservant une seule copie de chaque ensemble.

Solution de requête

Pour y parvenir, une requête SQL peut être utilisée. . La requête suivante suit les étapes décrites dans l'article fourni :

DELETE FROM foo
WHERE id NOT IN (SELECT min(id) --or max(id)
FROM foo
GROUP BY hash)

Explication

Cette requête utilise une sous-requête pour identifier la valeur d'ID minimale ou maximale pour chaque groupe. de lignes en double. La colonne de hachage représente un critère sur la base duquel la duplication est déterminée. En excluant les identifiants ne correspondant pas au minimum ou au maximum, la requête conserve une seule copie de chaque ensemble de doublons tout en supprimant le reste.

Requête alternative

Une approche alternative implique l'utilisation de la fonction ROW_NUMBER() OVER() :

DELETE FROM foo AS f
WHERE ROW_NUMBER() OVER (PARTITION BY hash ORDER BY id) > 1

Cette requête attribue un numéro de ligne à chaque ligne, partitionné par la colonne de hachage et trié par la colonne id par ordre croissant. Les lignes dont le numéro de ligne est supérieur à 1 (c'est-à-dire les doublons) sont ensuite supprimées.

Conclusion

En implémentant l'une ou l'autre des requêtes présentées dans PostgreSQL, les utilisateurs peuvent supprimer efficacement les doublons. lignes tout en préservant une seule copie de chaque ensemble. Cette approche permet de supprimer les données redondantes tout en préservant l'intégrité de l'ensemble de données d'origine.

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