PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Postgres :distinct mais pour une seule colonne

Pour faire un distinct sur une seule (ou n) colonne(s) :

select distinct on (name)
    name, col1, col2
from names

Cela renverra toutes les lignes contenant le nom. Si vous souhaitez contrôler laquelle des lignes sera renvoyée, vous devez commander :

select distinct on (name)
    name, col1, col2
from names
order by name, col1

Retournera la première ligne en cas de commande par col1.

distinct on :

SELECT DISTINCT ON ( expression [, ...] ) ne conserve que la première ligne de chaque ensemble de lignes où les expressions données sont égales. Les expressions DISTINCT ON sont interprétées selon les mêmes règles que pour ORDER BY (voir ci-dessus). Notez que la « première ligne » de chaque ensemble est imprévisible, sauf si ORDER BY est utilisé pour garantir que la ligne souhaitée apparaît en premier.

Les expressions DISTINCT ON doivent correspondre aux expressions ORDER BY les plus à gauche. La clause ORDER BY contiendra normalement des expressions supplémentaires qui déterminent la priorité souhaitée des lignes dans chaque groupe DISTINCT ON.