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_PESSOA | NOME | SOBRENOME | IDADE |
1 | Felipe | Barbosa | 23 |
2 | Ana | Vieira | 20 |
3 | João | Santos | 19 |
4 | Aline | Silva | 21 |
5 | Maira | Dantas | 25 |
6 | Ana | Havana | 19 |
7 | Aline | Ferreira | 22 |
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 | |
NOME | SOBRENOME |
Aline | Silva |
Aline | Ferreira |
Ana | Vieira |
Ana | Havana |
Felipe | Barbosa |
João | Santos |
Maira | Dantas |
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.
Até o próximo post!
Nenhum comentário:
Postar um comentário