Database
 sql >> Base de Dados >  >> RDS >> Database

Como eliminar linhas duplicadas no SQL

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 azul aparece apenas uma vez neste conjunto de resultados, mesmo que apareça duas vezes na tabela original. Isso ocorre porque especificamos que queremos selecionar apenas as linhas para as quais a combinação nome-cor é exclusiva.

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.