# SQL SELECT TOP: come selezionare record in modo mirato

SQL `SELECT TOP` ti consente di ridurre le analisi dei dati ai record selezionati nelle colonne e nelle tabelle in cui vuoi eseguire la ricerca. In presenza di database molto complessi, **limitando il numero di record da restituire** ottimizzi le prestazioni e risparmi risorse.

## Cos’è SQL `SELECT TOP`?

Per il linguaggio di database [SQL](https://www.ionos.it/digitalguide/server/know-how/che-cose-sql/) hai a disposizione diversi strumenti come i [comandi SQL](https://www.ionos.it/digitalguide/server/configurazione/comandi-sql/), gli [operatori SQL](https://www.ionos.it/digitalguide/server/configurazione/operatori-sql/) e le funzioni SQL. A seconda delle necessità puoi quindi eseguire ricerche nei record, analizzarli, modificarli o manipolarli. In particolare, in presenza di record molto grandi con migliaia di voci è utile **limitare il numero di risultati restituiti** per effettuare interrogazioni efficienti. A questo scopo utilizza il comando SQL `SELECT TOP`.

Combinando [SQL SELECT](https://www.ionos.it/digitalguide/server/configurazione/sql-select/) con la parola chiave `TOP` si ottiene una funzione che consente di limitare i **dati risultanti** al numero desiderato. I risultati vengono così ridotti alle voci più rilevanti, ottimizzando la leggibilità e l’efficacia dell’analisi. Tieni però presente che SQL `SELECT TOP` non funziona in tutti i database. Sono quindi disponibili i comandi alternativi `LIMIT`, `FETCH FIRST` e `ROWNUM`.

Consiglio Scopri le nozioni basilari e le funzioni più importanti nella nostra [introduzione a SQL con esempi](https://www.ionos.it/digitalguide/server/configurazione/introduzione-a-sql-mediante-esempi/).

## La sintassi di `SELECT TOP`

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

```sql
SELECT  TOP  n ColonnaA, ColonnaB, …
FROM tabella
```

Si usano i parametri seguenti:

- `SELECT TOP`: con il comando `SELECT TOP` definisci il numero di risultati e le colonne da cui richiamare i record. Indica il nome della colonna dopo il numero di risultati desiderato oppure inserisci un asterisco `*` per selezionare tutti i record della tabella.
- `FROM`: definisce in quale tabella controllare le colonne e i record.

Servendoti di altre clausole e operatori opzionali puoi precisare i risultati restituiti:

- `WHERE`: la clausola [SQL WHERE](https://www.ionos.it/digitalguide/server/configurazione/sql-where/) ti consente di definire le condizioni che devono essere soddisfatte dai record rilevanti. I risultati irrilevanti vengono esclusi.
- `ORDER BY`: con il comando [SQL ORDER BY](https://www.ionos.it/digitalguide/server/configurazione/sql-order-by/) e le istruzioni `ASC` o `DESC` stabilisci se i risultati devono essere disposti in ordine crescente o decrescente.

## Applicazioni dell’operatore `SELECT TOP`

In linea di principio SQL `SELECT TOP` serve per confrontare i dati, analizzarli o filtrarli per dimensioni e quantità. Tra le applicazioni pratiche per diversi settori troviamo tra l’altro:

- Richiamare i clienti con il numero di ordini più elevato
- Filtrare i primi dieci team con le campagne di marketing di maggior successo
- Visualizzare le 50 transazioni più grandi per controllare i movimenti finanziari sospetti
- Visualizzare i dieci siti web con il maggior numero di accessi in un mese
- Analizzare i clienti più promettenti sulla base di dati demografici, geografici e finanziari
- Eseguire controlli di magazzino richiamando i dieci prodotti con le scorte più basse
- Analizzare il comportamento d’acquisto in base ai prodotti più ordinati o visualizzati
- Determinare i fattori di rischio nei pazienti sulla base di risultati di test, sintomi o malattie pregresse rilevanti
- Filtrare i fornitori con i tempi o i percorsi di consegna più brevi

Consiglio Scopri le proposte personalizzate di server e hosting per i tuoi progetti web e database con l’[hosting SQL server](https://www.ionos.it/cloud/sql-server-hosting "Hosting SQL Server di IONOS") di IONOS. Affidati alla protezione e alla sicurezza dei dati secondo gli standard europei.

## Esempi pratici di SQL `SELECT TOP`

Per mostrare come funziona l’istruzione SQL `SELECT TOP`, te la presentiamo servendoci di due esempi pratici.

### Visualizzare gli ultimi dieci ordini

In una tabella “Ordini” vogliamo visualizzare solo gli ultimi dieci ordini. Procediamo come indicato di seguito:

```sql
SELECT  TOP  10  *
FROM  Ordini
ORDER BY  DataOrdine DESC
```

Ricorrendo ad **aggiunte** come `ORDER BY` puoi ordinare i risultati secondo parametri come quantità dell’ordine, prezzo o altre caratteristiche.

### Clienti con il maggior numero di ordini

In una tabella “Ordini” vogliamo visualizzare solo i primi dieci clienti con il maggior numero di ordini. Procediamo come indicato di seguito:

```sql
SELECT TOP 10 NomeCliente, IdCliente, COUNT(*) AS QuantitàOrdineTotale
FROM Ordini
GROUP BY NomeCliente, IDCliente
ORDER BY QuantitàOrdineTotale DESC
```

Con la funzione `COUNT` puoi sommare tutti gli ordini dei clienti con i relativi nomi e ID cliente per associarli agli ordini più frequenti.

## Alternative a SQL `SELECT TOP`

A seconda del sistema che usi per i tuoi [database](https://www.ionos.it/digitalguide/hosting/tecniche-hosting/database/) può essere necessaria un’**istruzione alternativa per restringere i risultati**. Controlla quindi se il tuo sistema di database supporta SQL `SELECT TOP` o un’altra funzione. Di seguito trovi un prospetto di SQL `SELECT TOP` e delle alternative in base al [sistema di gestione di database](https://www.ionos.it/digitalguide/hosting/tecniche-hosting/sistema-di-gestione-di-base-di-dati-dbms/) (DMS):

<table>
  <thead>
    <tr>
      <th>Funzione SQL</th>
      <th>DMS</th>
      <th>Funzione</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`SELECT TOP`</td>
      <td>SQL Server</td>
      <td>Limita i risultati a n</td>
    </tr>
    <tr>
      <td>`LIMIT`</td>
      <td>MySQL</td>
      <td>Limita i risultati a n</td>
    </tr>
    <tr>
      <td>`ROWNUM` oppure `ROWS`</td>
      <td>Oracle</td>
      <td>Definisce il numero di righe del risultato</td>
    </tr>
    <tr>
      <td>`OFFSET` + `FETCH`</td>
      <td>Oracle, MySQL</td>
      <td>Integrano la clausola `ORDER BY` e definiscono il numero di record nei risultati</td>
    </tr>
    <tr>
      <td>`FETCH FIRST n ROWS ONLY`</td>
      <td>Oracle</td>
      <td>Limita il numero di righe del risultato a n</td>
    </tr>
  </tbody>
</table>


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