Se 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:
Usando DISTINCT sem especificar colunas:
Usando DISTINCT com as colunas especificadas:
O ClickHouse permite usar as cláusulas 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:
Seleção de dados:
Selecionando dados com uma direção de ordenação diferente:
A linha 2, 4 foi descartada antes da ordenação.
Leve essa particularidade da implementação em conta ao escrever consultas.
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.
É possível obter o mesmo resultado aplicando GROUP BY ao mesmo conjunto de valores especificado na cláusula SELECT, sem usar nenhuma função de agregação. No entanto, há algumas diferenças em relação à abordagem com GROUP BY:
DISTINCT pode ser aplicado junto com GROUP 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.
Última modificação em 2 de julho de 2026