Come selezionare le prime N righe in MySQL
Selezionare le prime N righe di una tabella è un'operazione fondamentale quando lavori con i database. In questo tutorial vediamo come farlo in MySQL con esempi pratici.
Prima di continuare a leggere, volevo parlarti del nostro client MySQL moderno, Beekeeper Studio. Apri una tabella e scorre le righe pagina per pagina al posto tuo, oppure fai clic destro e scegli SQL: Select Top per ottenere la query. Per MySQL è gratuito, scaricalo qui.
Usare la clausola LIMIT
La clausola LIMIT di MySQL è un modo semplice per indicare quante righe restituire dal result set di una query.
Esempio: selezionare le prime 5 righe
Supponiamo che tu abbia una tabella chiamata employees con il seguente schema:
CREATE TABLE employees (
id INT,
name VARCHAR(100),
salary DECIMAL(10, 2)
);
Vuoi selezionare i 5 dipendenti con lo stipendio più alto, in ordine decrescente.
SELECT id, name, salary
FROM employees
ORDER BY salary DESC
LIMIT 5;
Perché funziona:
-
ORDER BY salary DESCordina le righe dallo stipendio più alto al più basso. -
LIMIT 5limita l'output alle prime 5 righe dopo l'ordinamento.
Output atteso:
+----+----------+--------+
| id | name | salary |
+----+----------+--------+
| 3 | Alice | 90000 |
| 5 | Bob | 85000 |
| 2 | Charlie | 75000 |
| 6 | Diana | 70000 |
| 4 | Edward | 68000 |
+----+----------+--------+
Gestire i pareggi con LIMIT
In caso di valori a pari merito, usare solo LIMIT potrebbe non dare risultati coerenti senza gestire in modo specifico i pareggi. Aggiungi altre colonne all'ORDER BY per risolverli.
Esempio: gestire i pareggi con un ordinamento secondario
Per gestire gli stipendi a pari merito, ordina anche per id del dipendente come criterio secondario:
SELECT id, name, salary
FROM employees
ORDER BY salary DESC, id ASC
LIMIT 5;
Perché funziona:
- Aggiungendo
id ASC, a parità di stipendio vengono scelti sempre i dipendenti con l'idpiù basso.
Usare LIMIT per la paginazione
Oltre a selezionare le prime N righe, spesso serve paginare i risultati selezionando un intervallo specifico di righe.
Esempio: selezionare le 5 righe successive
Per paginare i risultati e selezionare le righe dalla 6 alla 10 in base allo stipendio:
SELECT id, name, salary
FROM employees
ORDER BY salary DESC
LIMIT 5 OFFSET 5;
Perché funziona:
-
LIMIT 5indica il numero di righe da restituire. -
OFFSET 5salta le prime 5 righe.
Output atteso:
I 5 dipendenti successivi ai primi 5:
+----+---------+--------+
| id | name | salary |
+----+---------+--------+
| 1 | Frank | 67000 |
| 7 | Grace | 64000 |
| 8 | Hannah | 60000 |
| 9 | Ivan | 59000 |
| 10 | Jane | 58000 |
+----+---------+--------+
Conclusione
Selezionare le prime N righe in MySQL con la clausola LIMIT è semplice ed efficiente. In caso di possibili pareggi, garantisci un ordinamento stabile aggiungendo altre colonne all'ORDER BY. Questa tecnica semplice è essenziale in molte applicazioni, come analytics e reportistica, soprattutto quando lavori con grandi dataset.
Padroneggiando queste tecniche avrai più controllo sul recupero e sulla manipolazione dei dati in MySQL.
Beekeeper Studio è una GUI per MySQL gratuita e open source
Ultimamente uso Beekeeper Studio per il mio lavoro con MySQL e è diventato in fretta uno dei miei strumenti per database preferiti. L'interfaccia è pulita, moderna e senza distrazioni, così è facile concentrarsi sulle query senza il disordine che trovi in altri strumenti. - Surendra Singh
Beekeeper Studio è un client MySQL veloce, intuitivo e facile da usare. Supporta anche tantissimi altri database e funziona alla grande su Windows, Mac e Linux.
Cosa dicono gli utenti MySQL di Beekeeper Studio
Ho scelto questo programma dopo anni di phpMyAdmin: è come entrare in un mondo di qualità superiore; qui ho sentito davvero che l'utente è curato sul serio. L'idea stessa, la realizzazione, l'esperienza pratica: sono sinceramente grato a Matthew per tutto questo.
Strumento fantastico, l'IDE più pratico che abbia trovato finora per amministrare database Postgres e MySql: funziona e basta, senza complicazioni :-)