Para fazer uma distinção em apenas uma (ou n) coluna(s):
select distinct on (name)
name, col1, col2
from names
Isso retornará qualquer uma das linhas que contenham o nome. Se você quiser controlar quais das linhas serão devolvidas, você precisa fazer o pedido:
select distinct on (name)
name, col1, col2
from names
order by name, col1
Retornará a primeira linha quando ordenado por col1.
distinct on
:
SELECT DISTINCT ON ( expressão [, ...] ) mantém apenas a primeira linha de cada conjunto de linhas em que as expressões fornecidas são avaliadas como iguais. As expressões DISTINCT ON são interpretadas usando as mesmas regras de ORDER BY (veja acima). Observe que a “primeira linha” de cada conjunto é imprevisível, a menos que ORDER BY seja usado para garantir que a linha desejada apareça primeiro.
A(s) expressão(ões) DISTINCT ON deve(m) corresponder à(s) expressão(ões) ORDER BY mais à esquerda. A cláusula ORDER BY normalmente conterá expressões adicionais que determinam a precedência desejada de linhas dentro de cada grupo DISTINCT ON.