# SQL SELECT DISTINCT: rimuovere i valori doppi dalle interrogazioni di dati

SQL `SELECT DISTINCT` ti consente di ottenere risultati contenenti solo **righe e record univoci** nelle interrogazioni dei dati. Il comando rimuove i doppioni dalle righe e dai record selezionati, aumentando la precisione e la chiarezza dell’analisi dei dati.

## Cos’è SQL `SELECT DISTINCT`?

`SELECT DISTINCT` è un operatore SQL usato in abbinamento al comando [SQL SELECT](https://www.ionos.it/digitalguide/server/configurazione/sql-select/). Il comando `SELECT` permette di selezionare uno o più record e colonne nelle interrogazioni di dati. Usandolo in combinazione con l’operatore `DISTINCT` fai in modo che il risultato dell’interrogazione contenga **solo righe univoche e diverse**, senza righe e valori doppi. Combinando `SELECT DISTINCT` con altri [operatori SQL](https://www.ionos.it/digitalguide/server/configurazione/operatori-sql/) e [comandi SQL](https://www.ionos.it/digitalguide/server/configurazione/comandi-sql/) puoi adattare le interrogazioni alle tue esigenze specifiche.

### La differenza tra SQL `SELECT DISTINCT` e `SELECT UNIQUE`

`UNIQUE` (univoco) e `DISTINCT` (distinto) hanno un significato simile, ma come operatori SQL svolgono **funzioni diverse**. Per utilizzare correttamente SQL `SELECT DISTINCT` occorre quindi conoscere le differenze tra i due operatori.

<table>
  <thead>
    <tr>
      <th>SQL SELECT DISTINCT</th>
      <th>SQL SELECT UNIQUE</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Controlla interi record per individuare righe e valori doppi, eliminando le ridondanze e restituendo solo risultati distinti e univoci</td>
      <td>Adatto per impedire che nelle colonne e nelle tabelle selezionate vengano inseriti duplicati e valori doppi, limitando le colonne</td>
    </tr>
    <tr>
      <td>Utilizzato per ottenere risultati univoci e significativi soprattutto nella valutazione, nell’analisi e nel confronto di record</td>
      <td>Durante la creazione e l’elaborazione di tabelle, è usato per garantire una migliore integrità dei dati senza ridondanze</td>
    </tr>
  </tbody>
</table>

Consiglio Vuoi imparare rapidamente il linguaggio di programmazione e di database [SQL](https://www.ionos.it/digitalguide/server/know-how/che-cose-sql/)? La nostra [introduzione a SQL mediante esempi](https://www.ionos.it/digitalguide/server/configurazione/introduzione-a-sql-mediante-esempi/) ti presenta le funzioni e le nozioni basilari più importanti di SQL.

## La sintassi di `SELECT DISTINCT`

La semplice sintassi di `SELECT DISTINCT` si presenta come segue:

```sql
SELECT  DISTINCT  ColonnaA, ColonnaB, …
FROM tabella
```

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](https://www.ionos.it/digitalguide/server/configurazione/sql-where/) permette di limitare l’interrogazione di dati ai valori rilevanti applicando condizioni aggiuntive.

## Le applicazioni di `SELECT DISTINCT`

Le possibilità d’impiego per le interrogazioni con SQL `SELECT DISTINCT` sono **pressoché illimitate**. Ad esempio, permettono di:

- Limitare a una voce univoca i dati dei clienti, degli ordini, dei pazienti o dei prodotti che compaiono più volte nelle righe.
- Conteggiare e mostrare il numero di acquisti dei prodotti in base agli ordini e all’ID del prodotto.
- Richiamare i dati univoci di pazienti o clienti.
- Visualizzare 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 presentiamo servendoci di due esempi pratici.

### Richiamare tutti i clienti

In una tabella “Ordini” vogliamo richiamare univocamente tutti i clienti escludendo le righe doppie dovute a ordini multipli. Procediamo come indicato di seguito:

```sql
SELECT  DISTINCT  NomeCliente
FROM  Ordini
```

### Filtrare i clienti di una determinata regione

Con la clausola `WHERE` puoi definire meglio la valutazione dei dati dei clienti applicando **condizioni aggiuntive**. Se ad esempio vuoi richiamare dalla tabella “Ordini” tutti i nomi dei clienti residenti in Italia, procedi come segue:

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

## Alternative a SQL `SELECT DISTINCT`

Anche se `SELECT DISTINCT` è un modo pratico per eliminare i doppioni dalle interrogazioni di dati, non sempre è la soluzione migliore. Siccome in presenza di record di grandi dimensioni questo operatore richiede una quantità relativamente elevata di risorse per confrontare ogni singola colonna selezionata, vale la pena di scegliere **alternative con una funzione analoga**, tra cui:

- `GROUP BY`: la clausola [SQL GROUP BY](https://www.ionos.it/digitalguide/server/configurazione/sql-group-by/) consente di raggruppare i record desiderati delle colonne indicate e di precisarli con ulteriori funzioni e operatori.
- `EXISTS`: [SQL EXISTS](https://www.ionos.it/digitalguide/server/configurazione/sql-exists/) controlla se in un’altra tabella sono presenti valori e record specifici.
- `COUNT`: combinando `DISTINCT` con la funzione [SQL COUNT](https://www.ionos.it/digitalguide/server/configurazione/sql-count/) è possibile contare i valori univoci nelle colonne.
- `SELECT` + `FROM` + `WHERE`: con una sottoquery, ovvero un’interrogazione annidata in un’altra, puoi restringere meglio i risultati. Per far questo, nella sottoquery scegli la colonna interessata con `SELECT`, con FROM indica in quale tabella si trova la colonna e con `WHERE` definisci le condizioni che i risultati devono soddisfare.


This is a markdown version of: [https://www.ionos.it/digitalguide/server/configurazione/sql-select-distinct/](https://www.ionos.it/digitalguide/server/configurazione/sql-select-distinct/) for AI/LLM consumption.