Database
 sql >> Database >  >> RDS >> Database

Come eliminare le righe duplicate in SQL

Problema:

Desideri eliminare le righe duplicate dal set di risultati di una query in modo che ogni riga venga visualizzata una sola volta.

Esempio:

Il nostro database ha una tabella chiamata clothes con i dati nelle seguenti colonne:id , name , color e year_produced .

id colore anno_prodotto
1 T-shirt giallo 2015
2 giacca blu 2016
3 jeans nero 2015
4 giacca blu 2015
5 giacca verde 2016
6 giacca giallo 2017
7 cappello giallo 2017

Prendiamo i nomi e i colori non ripetuti degli abiti prodotti prima del 2017.

Soluzione:

SELECT DISTINCT name,
  color
FROM clothes
WHERE year_produced < 2017;

Ecco il risultato:

nome colore
T-shirt giallo
giacca blu
jeans nero
giacca verde

Si noti che il blu appare solo una volta in questo set di risultati, anche se appare due volte nella tabella originale. Questo perché abbiamo specificato che vogliamo selezionare solo quelle righe per le quali la combinazione nome-colore è univoca.

Discussione:

Usa semplicemente il DISTINCT parola chiave dopo SELECT se vuoi selezionare solo righe non ripetute. Questa parola chiave obbliga la query a eliminare le righe duplicate, in base solo alle colonne che hai elencato.

Ecco un esempio di selezione delle sole righe per le quali il nome dell'elemento è univoco:

SELECT DISTINCT name
FROM clothes
WHERE year_produced < 2017;

A differenza della query precedente, questa restituisce solo tre record:

nome
T-shirt
jeans

Mentre ci sono quattro jeans nella tabella originale (due blu, uno verde e uno giallo), l'articolo appare solo una volta in questo set di risultati grazie al DISTINCT parola chiave.