Mysql
 sql >> Database >  >> RDS >> Mysql

Come limitare le righe in un set di risultati MySQL

Problema:

Vorresti limitare il numero di righe in un set di risultati in MySQL.

Esempio:

Il nostro database ha una tabella denominata student con i dati nelle colonne id , first_name , last_name e age .

id nome cognome età
1 Steven Watson 25
2 Lisa Anderson 19
3 Alice Mugnaio 19
4 Maria Marrone 25
5 Lucia Watson 25
6 Michele Jackson 22

Selezioniamo i nomi completi e l'età degli studenti, ma limitiamo le righe restituite a tre.

Soluzione:

SELECT first_name, last_name, age
FROM student
LIMIT 3;

Ecco il risultato della query:

id nome cognome età
1 Steven Watson 25
2 Lisa Anderson 19
3 Alice Mugnaio 19

Discussione:

La clausola LIMIT limita il numero di righe nel set di risultati. Viene utilizzato nell'istruzione SELECT, di solito alla fine dell'istruzione. (Anche ORDER BY dovrebbe essere elencato prima di LIMIT.)

L'unico argomento richiesto è il numero di righe da visualizzare. Nel nostro esempio, LIMIT 3 ha prodotto un set di risultati contenente tre righe. A meno che non specifichi diversamente con l'argomento OFFSET, questa funzione restituirà sempre il primo n righe che soddisfano i requisiti della query.

L'argomento OFFSET facoltativo di LIMIT viene posizionato prima dell'argomento che indica il numero di righe restituite. Indica la posizione della prima riga restituita da LIMIT (cioè '0' è la prima riga, 1 è la seconda riga, ecc.). L'offset e il numero di righe sono separati da una virgola.

La query restituisce gli stessi record della query precedente perché l'offset è zero. (Zero è il valore di offset predefinito.)

SELECT first_name, last_name, age
FROM student
LIMIT 0, 3;

In queste query, le righe dei risultati non sono ordinate. Se desideri selezionare tre righe da un set di risultati ordinato, utilizza ORDER BY:

SELECT first_name, last_name, age
FROM student
ORDER BY age DESC, last_name, first_name
LIMIT 1,3;

Qui, ordiniamo prima le righe in base all'età (decrescente), quindi al cognome, quindi al nome. Usiamo il valore di offset per iniziare sulla seconda riga restituita e limitiamo i risultati a tre righe:

first_name cognome età
Lucia Watson 25
Steven Watson 25
Michele Jackson 22

Questa query prima ordina le righe in base alla colonna dell'età in ordine decrescente. Quindi ordina per last_name e first_name in ordine crescente. Se guardi il tavolo, vedrai che gli studenti più grandi (Steven, Lucy, Mary) hanno 25 anni. Tuttavia, Mary viene omessa perché è la prima riga e l'offset è 1 (cioè iniziamo con la seconda riga). Lucy è ora la prima perché il suo nome viene prima di quello di Steven. (Steven e Lucy hanno lo stesso cognome, quindi il loro ordine è determinato dal nome.) Michael ha 22 anni, il che lo rende il secondo studente più anziano e l'ultima delle tre righe restituite.