SQL SELECT DISTINCT ti consente di ottenere risultati con­te­nen­ti solo righe e record univoci nelle in­ter­ro­ga­zio­ni dei dati. Il comando rimuove i doppioni dalle righe e dai record se­le­zio­na­ti, au­men­tan­do la pre­ci­sio­ne e la chiarezza dell’analisi dei dati.

Cos’è SQL SELECT DISTINCT?

SELECT DISTINCT è un operatore SQL usato in ab­bi­na­men­to al comando SQL SELECT. Il comando SELECT permette di se­le­zio­na­re uno o più record e colonne nelle in­ter­ro­ga­zio­ni di dati. Usandolo in com­bi­na­zio­ne con l’operatore DISTINCT fai in modo che il risultato dell’in­ter­ro­ga­zio­ne contenga solo righe univoche e diverse, senza righe e valori doppi. Com­bi­nan­do SELECT DISTINCT con altri operatori SQL e comandi SQL puoi adattare le in­ter­ro­ga­zio­ni alle tue esigenze spe­ci­fi­che.

La dif­fe­ren­za tra SQL SELECT DISTINCT e SELECT UNIQUE

UNIQUE (univoco) e DISTINCT (distinto) hanno un si­gni­fi­ca­to simile, ma come operatori SQL svolgono funzioni diverse. Per uti­liz­za­re cor­ret­ta­men­te SQL SELECT DISTINCT occorre quindi conoscere le dif­fe­ren­ze tra i due operatori.

SQL SELECT DISTINCT SQL SELECT UNIQUE
Controlla interi record per in­di­vi­dua­re righe e valori doppi, eli­mi­nan­do le ri­don­dan­ze e re­sti­tuen­do solo risultati distinti e univoci Adatto per impedire che nelle colonne e nelle tabelle se­le­zio­na­te vengano inseriti duplicati e valori doppi, limitando le colonne
Uti­liz­za­to per ottenere risultati univoci e si­gni­fi­ca­ti­vi so­prat­tut­to nella va­lu­ta­zio­ne, nell’analisi e nel confronto di record Durante la creazione e l’ela­bo­ra­zio­ne di tabelle, è usato per garantire una migliore integrità dei dati senza ri­don­dan­ze
Consiglio

Vuoi imparare ra­pi­da­men­te il lin­guag­gio di pro­gram­ma­zio­ne e di database SQL? La nostra in­tro­du­zio­ne a SQL mediante esempi ti presenta le funzioni e le nozioni basilari più im­por­tan­ti di SQL.

La sintassi di SELECT DISTINCT

La semplice sintassi di SELECT DISTINCT si presenta come segue:

SELECT  DISTINCT  ColonnaA, ColonnaB, …
FROM tabella
sql

Si usano i parametri seguenti:

  • SELECT DISTINCT: il comando SELECT abbinato all’operatore DISTINCT seleziona le colonne per cui si desidera eliminare i duplicati dal risultato.
  • FROM: seleziona la tabella per cui cercare duplicati nelle colonne.
  • WHERE: la clausola opzionale SQL WHERE permette di limitare l’in­ter­ro­ga­zio­ne di dati ai valori rilevanti ap­pli­can­do con­di­zio­ni ag­giun­ti­ve.

Le ap­pli­ca­zio­ni di SELECT DISTINCT

Le pos­si­bi­li­tà d’impiego per le in­ter­ro­ga­zio­ni con SQL SELECT DISTINCT sono pressoché il­li­mi­ta­te. Ad esempio, per­met­to­no di:

  • Limitare a una voce univoca i dati dei clienti, degli ordini, dei pazienti o dei prodotti che compaiono più volte nelle righe.
  • Con­teg­gia­re e mostrare il numero di acquisti dei prodotti in base agli ordini e all’ID del prodotto.
  • Ri­chia­ma­re i dati univoci di pazienti o clienti.
  • Vi­sua­liz­za­re tutti gli indirizzi di consegna o i fornitori di una regione.

Esempi pratici di SQL SELECT DISTINCT

Per mostrare come funziona l’operatore SQL SELECT DISTINCT te lo pre­sen­tia­mo ser­ven­do­ci di due esempi pratici.

Ri­chia­ma­re tutti i clienti

In una tabella “Ordini” vogliamo ri­chia­ma­re uni­vo­ca­men­te tutti i clienti esclu­den­do le righe doppie dovute a ordini multipli. Pro­ce­dia­mo come indicato di seguito:

SELECT  DISTINCT  NomeCliente
FROM  Ordini
sql

Filtrare i clienti di una de­ter­mi­na­ta regione

Con la clausola WHERE puoi definire meglio la va­lu­ta­zio­ne dei dati dei clienti ap­pli­can­do con­di­zio­ni ag­giun­ti­ve. Se ad esempio vuoi ri­chia­ma­re dalla tabella “Ordini” tutti i nomi dei clienti residenti in Italia, procedi come segue:

SELECT  DISTINCT  NomiClienti, Nazione
FROM  Ordini
WHERE  Nazione =  'Italia'
sql

Al­ter­na­ti­ve a SQL SELECT DISTINCT

Anche se SELECT DISTINCT è un modo pratico per eliminare i doppioni dalle in­ter­ro­ga­zio­ni di dati, non sempre è la soluzione migliore. Siccome in presenza di record di grandi di­men­sio­ni questo operatore richiede una quantità re­la­ti­va­men­te elevata di risorse per con­fron­ta­re ogni singola colonna se­le­zio­na­ta, vale la pena di scegliere al­ter­na­ti­ve con una funzione analoga, tra cui:

  • GROUP BY: la clausola SQL GROUP BY consente di rag­grup­pa­re i record de­si­de­ra­ti delle colonne indicate e di pre­ci­sar­li con ulteriori funzioni e operatori.
  • EXISTS: SQL EXISTS controlla se in un’altra tabella sono presenti valori e record specifici.
  • COUNT: com­bi­nan­do DISTINCT con la funzione SQL COUNT è possibile contare i valori univoci nelle colonne.
  • SELECT + FROM + WHERE: con una sot­to­que­ry, ovvero un’in­ter­ro­ga­zio­ne annidata in un’altra, puoi re­strin­ge­re meglio i risultati. Per far questo, nella sot­to­que­ry scegli la colonna in­te­res­sa­ta con SELECT, con FROM indica in quale tabella si trova la colonna e con WHERE definisci le con­di­zio­ni che i risultati devono sod­di­sfa­re.
Vai al menu prin­ci­pa­le