SELECT DISTINCT for especificado, apenas linhas únicas permanecerão no resultado da consulta. Assim, de cada conjunto de linhas totalmente idênticas no resultado, apenas uma linha será mantida.
Você pode especificar a lista de colunas que devem ter valores únicos: SELECT DISTINCT ON (column1, column2,...). Se as colunas não forem especificadas, todas serão levadas em consideração.
Considere a tabela:
DISTINCT sem especificar colunas:
DISTINCT com as colunas especificadas:
DISTINCT e ORDER BY
DISTINCT e ORDER BY para colunas diferentes em uma mesma consulta. A cláusula DISTINCT é executada antes da cláusula ORDER BY.
Considere a tabela:
2, 4 foi descartada antes da ordenação.
Leve essa particularidade da implementação em conta ao escrever consultas.
Processamento de NULL
DISTINCT funciona com NULL como se NULL fosse um valor específico e NULL==NULL. Em outras palavras, nos resultados de DISTINCT, diferentes combinações com NULL aparecem apenas uma vez. Isso difere do processamento de NULL na maioria dos outros contextos.
Alternativas
SELECT, sem usar nenhuma função de agregação. No entanto, há algumas diferenças em relação à abordagem com GROUP BY:
DISTINCTpode ser aplicado junto comGROUP BY.- Quando ORDER BY é omitido e LIMIT é definido, a consulta para de ser executada imediatamente após a leitura do número necessário de linhas distintas.
- Os blocos de dados são produzidos à medida que são processados, sem esperar que toda a consulta termine de ser executada.