sql >> Base de Datos >  >> RDS >> PostgreSQL

Postgres:Distinto pero solo para una columna

Para distinguir solo una (o n) columna(s):

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

Esto devolverá cualquiera de las filas que contengan el nombre. Si desea controlar cuál de las filas se devolverá, debe ordenar:

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

Devolverá la primera fila cuando se ordene por col1.

distinct on :

SELECT DISTINCT ON ( expresión [, ...] ) mantiene solo la primera fila de cada conjunto de filas donde las expresiones dadas se evalúan como iguales. Las expresiones DISTINCT ON se interpretan utilizando las mismas reglas que para ORDER BY (ver arriba). Tenga en cuenta que la "primera fila" de cada conjunto es impredecible a menos que se use ORDER BY para garantizar que la fila deseada aparezca primero.

Las expresiones DISTINCT ON deben coincidir con las expresiones ORDER BY situadas más a la izquierda. La cláusula ORDER BY normalmente contendrá expresiones adicionales que determinan la precedencia deseada de las filas dentro de cada grupo DISTINCT ON.