PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Postgres:distinto, mas apenas para uma coluna


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.