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.