Link rapidi:

SQL: SELECT DISTINCT per eliminare i doppioni dal risultato di una interrogazione (query)


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.

Ultimo aggiornamento: 07/08/2009
Copyright © 2000-2012 Parlandosparlando