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.