Cláusula Distinct no SQL

Após a lista de seleção ser processada, a tabela resultante pode opcionalmente estar sujeita à remoção das linhas duplicadas. A palavra chave DISTINCT deve ser escrita logo após o SELECT para especifi...

Publicado em: 14 de janeiro de 2009  |  Leituras: 7.081  |  Canal: PostgreSQL  |  Autor: Redação Oficina da Net
Após a lista de seleção ser processada, a tabela resultante pode opcionalmente estar sujeita à remoção das linhas duplicadas. A palavra chave DISTINCT deve ser escrita logo após o SELECT para especificar esta funcionalidade:

SELECT DISTINCT lista_de_seleção ...

(Em vez de DISTINCT pode ser utilizada a palavra ALL para especificar o comportamento padrão de manter todas as linhas)
Como é óbvio, duas linhas são consideradas distintas quando têm pelo menos uma coluna diferente. Os valores nulos são considerados iguais nesta comparação.

Como alternativa, uma expressão arbitrária pode determinar quais linhas devem ser consideradas distintas:

SELECT DISTINCT ON (expressão [, expressão ...]) lista_de_seleção ...

Neste caso, expressão é uma expressão de valor arbitrária avaliada para todas as linhas. Um conjunto de linhas para as quais todas as expressões são iguais são consideradas duplicadas, e somente a primeira linha do conjunto é mantida na saída. Deve ser observado que a “primeira linha” de um conjunto é imprevisível, a não ser que a consulta seja ordenada por um número suficiente de colunas para garantir a ordem única das linhas que chegam no filtro DISTINCT (o processamento de DISTINCT ON ocorre após a ordenação do ORDER BY).

A cláusula DISTINCT ON não faz parte do padrão SQL, sendo algumas vezes considerada um estilo ruim devido à natureza potencialmente indeterminada de seus resultados. Utilizando-se adequadamente GROUP BY e subconsultas no FROM esta construção pode ser evitada, mas geralmente é a alternativa mais fácil.

Resposta em até 24 horas! (grátis)Dúvidas?

Compartilhe
Share orkut
delicious
Gostei

Nossa url encurtada:
Autor da matéria
Redação Oficina da Net

A Redação do Oficina da Net é composta por todos os integrantes da equipe do portal. Estamos abertos a indicações de matérias, entre em contato conosco solicitando sua dúvida, ou acesse nosso fórum.

Dicas do canal