2009-07-20 17 views
2

Je veux supprimer des lignes en double retour d'une requête de sélection dans PostgresSuppression des lignes en double dans Postgres

j'ai la requête suivante

SELECT DISTINCT name FROM names ORDER BY name 

Mais cela ne supprime pas en quelque sorte des lignes en double?

+0

J'utilise une ancienne PostgreSQL 7.3.4 la version – Roland

+0

éventuelle double de [supprimer les doublons d'une table] (http://stackoverflow.com/questions/243567/remove-duplicate-from-a-table – Flimzy

+0

Ce n'est pas un doublon. @Flimzy ... une question différente, avec un titre assez vague. – ocodo

Répondre

5

PostgreSQL est sensible à la casse, cela pourrait être un problème ici ON DISTINCT peut être utilisé pour la recherche insensible à la casse (testé sur 7,4)

SELECT DISTINCT ON (upper(name)) name FROM names ORDER BY upper(name); 
+0

Thx, cela fonctionne maintenant – Roland

0

Peut-être quelque chose avec les mêmes prospectifs, mais-différents personnages (comme LATIN 'a'/CYRILLIC 'a')

0

N'oubliez pas d'ajouter un trim() là aussi. Ou bien 'Record' et 'Record' seront traités comme des entités séparées. Cela a fini par me faire du mal au début, je devais mettre à jour ma requête:

SELECT DISTINCT ON (upper(trim(name))) name FROM names ORDER BY upper(trim(name)); 
0

En Postgres 9.2 et vous pouvez maintenant lancer la colonne à un type de CITEXT ou même faire la colonne de sorte que vous n'avez pas monter sur select.

SELECT DISTINCT name::citext FROM names ORDER BY name::citext 
Questions connexes