Il comando
SELECT DISTINCT di SQL serve ad estrarre una sola volta ogni diversa occorenza riscontrata in un dato campo del database: non vengono considerate le righe duplicate.
Spesso viene utilizzato per creare le voci di menu in modo tale che, se una stessa voce viene trovata piu' di una volta all'interno di una colonna del database, questa viene prelevata una sola volta.
La sintassi base e':
SELECT DISTINCT nome_colonna FROM nome_tabella
Spesso puo' essere utile associargli il comando ORDER BY che consente di poter ordinare i risultati in modo ascendente (A-Z ASC) o discendente (Z-A DESC). In questo caso la sintassi sara':
SELECT DISTINCT nome_colonna FROM nome_tabella ORDER BY nome_colonna ASC
Si supponga, per esempio, di avere una tabella chiamata
utenti composta dai campi:
id,
categoria,
cognome e
nome e di voler creare un menu che mostri tutti i tipi di "categorie" presenti nel database.
Mettiamo che le voci presenti nella colonna
categoria siano: 4 "residenziali" e 3 "business"; il risultato che si otterrebbe utilizzando semplicemente SELECT e' di 7 voci di categorie, quando, pero', 5 sono doppione e solo 2 sono diverse fra loro, come mostra l'esempio seguente:
SELECT categoria FROM utenti ORDER BY categoria ASC
restituisce il seguente risultato:
business
business
business
residenziali
residenziali
residenziali
residenziali
Sarebbe folle creare una lista di voci per un menu dove l'utente si trovasse a dover scegliere tra le stesse voci ripetute...
Proprio in questi casi si deve utilizzare
SELECT DISTINCT per poter eliminare dai risultati della ricerca i doppioni.
Il comando da scrivere sara' simile al seguente:
SELECT DISTINCT (categoria) FROM utenti ORDER BY categoria ASC
dove, in questo esempio, si e' interrogato il database
utenti e gli si e' chiesto di selezionare e restituire (SELECT) dalla colonna
categoria tutte le singole voci che trova escludendo i doppioni (DISTINCT), ordinando il risultato (ORDER BY) per
categoria in ordine crescente (ASC) il che, essendo parole, significa dalla a alla z.
Il risultato utilizzando questa volta SELECT DISTINCT sara' il seguente:
business
residenziali
come si vede, senza i doppioni.