Problema:
Você deseja eliminar todas as linhas duplicadas do conjunto de resultados de uma consulta para que cada linha apareça apenas uma vez.
Exemplo:
Nosso banco de dados tem uma tabela chamada
clothes com dados nas seguintes colunas:id , name , color , e year_produced . | id | nome | cor | ano_produzido |
|---|---|---|---|
| 1 | camiseta | amarelo | 2015 |
| 2 | jaqueta | azul | 2016 |
| 3 | jeans | preto | 2015 |
| 4 | jaqueta | azul | 2015 |
| 5 | jaqueta | verde | 2016 |
| 6 | jaqueta | amarelo | 2017 |
| 7 | chapéu | amarelo | 2017 |
Vamos pegar os nomes e cores não repetidos das roupas produzidas antes de 2017.
Solução:
SELECT DISTINCT name, color FROM clothes WHERE year_produced < 2017;
Aqui está o resultado:
| nome | cor |
|---|---|
| camiseta | amarelo |
| jaqueta | azul |
| jeans | preto |
| jaqueta | verde |
Observe que o
Discussão:
Basta usar o
DISTINCT palavra-chave após SELECT se desejar selecionar apenas linhas não repetidas. Essa palavra-chave força a consulta a descartar todas as linhas duplicadas, com base apenas nas colunas listadas. Aqui está um exemplo de seleção apenas das linhas para as quais o nome do item é exclusivo:
SELECT DISTINCT name FROM clothes WHERE year_produced < 2017;
Ao contrário da consulta anterior, esta retorna apenas três registros:
| nome | |
|---|---|
| camiseta | |
| jeans | |
Embora haja quatro jeans na tabela original (dois azuis, um verde e um amarelo), o item aparece apenas uma vez neste conjunto de resultados graças ao
DISTINCT palavra-chave.