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
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.