sábado, 9 de julho de 2016

Select DISTINCT

Olá!

É possível armazenar dados iguais na mesma coluna de uma tabela, mas por outro lado as vezes é necessário realizar uma consulta que não retorne estes dados iguais. E para que não seja retornado registros duplicados na resposta, o SQL possui o comando Distinct.

Veja abaixo a tabela de exemplo.
A coluna NOME possui dois registros com o nome Ana, e dois com o nome Aline.

PESSOA
CD_PESSOANOMESOBRENOMEIDADE
1FelipeBarbosa23
2AnaVieira20
3JoãoSantos19
4AlineSilva21
5MairaDantas25
6AnaHavana19
7AlineFerreira22

Se ao consultar os nomes cadastrados na tabela PESSOA, com o seguinte SQL:
          SELECT NOME
             FROM PESSOA
           WHERE CD_PESSOA > 0
      ORDER BY NOME

Resposta da execução do SQL:
resposta_da_consulta
Aline
Aline
Ana
Ana
Felipe
João
Maira

Repare que os nomes Ana e Aline estão aparecendo de forma duplicada. Deste modo, o SQL retorna registros com valores iguais.

Para realizar uma consulta que elimine os dados duplicados na resposta é necessário utilizar o comando DISTINCT no Select. Veja o exemplo de Select com Distinct:

           SELECT DISTINCT NOME
             FROM PESSOA
           WHERE CD_PESSOA > 0
      ORDER BY NOME

Resposta:
resposta_da_consulta
Aline
Ana
Felipe
João
Maira
Note que agora a resposta não possui os nomes duplicados. Então, com o uso do comando Distinct é eliminado os registros com valores iguais da execução do Select.

Também pode utilizar o Distinct para uma consulta de dois ou mais campos, entretanto tenha em mente que somente serão eliminadas as linhas duplicadas. Pois, o comando Distinct analisa todos campos que estão na consulta do SQL.

Ou seja, se consultar NOME e SOBRENOME na tabela PESSOA, conforme o SQL:
           SELECT DISTINCT NOME
                        , SOBRENOME
             FROM PESSOA
           WHERE CD_PESSOA > 0
      ORDER BY NOME

A resposta é:
resposta_da_consulta
NOMESOBRENOME
AlineSilva
AlineFerreira
AnaVieira
AnaHavana
FelipeBarbosa
JoãoSantos
MairaDantas
Foi retornado os nomes duplicados, porque os sobrenomes são diferentes. Assim, tornando diferentes os registros da resposta.

Enfim, o comando Distinct elimina os registros com valores iguais da reposta. Tenha em mente que se algum valor das colunas que estão no Select não for igual, o registro da resposta torna-se diferente.

Consultar a relação de Termos e Abreviaturas acesse aqui.
Até o próximo post!

Nenhum comentário:

Postar um comentário