Commenti(0)
Limitare il risultato di una query in MySQL l'operatore LIMIT
Ecco come limitare il risultato di una query, l'operatore LIMIT utilizzata anche per la paginazione
L’operatore LIMIT offre la possibilità di limitare il risultato di una query, sia essa una SELECT una UPDATE o una DELETE.
Questa possibilità ci consente quindi di controllare il numero di record interessati dalla query.
Per selezionare, ad esempio, 5 record la query da eseguire è:
1SELECT * FROM NOME_TABELLA WHERE CONDIZIONE LIMIT 5
con questa query saranno selezionati quindi solo 5 record.
Allo stesso modo è possibile utilizzare l’operatore LIMIT per la UPDATE e per la DELETE , infatti l’istruzione seguente cancellerà soli 5 record
1DELETE FROM NOME_TABELLA WHERE CONDIZIONE LIMIT 5
Un utilizzo più evoluto dell’operatore LIMIT è quello di passargli come parametro 2 valori I,N dove I significa il record dal quale iniziare e N il numero di record da visualizzare dopo I, come nell’esempio seguente.
1SELECT * FROM NOME_TABELLA WHERE CONDIZIONE LIMIT 9, 5
dove appunto 9 è il record da cui iniziare e 5 è il numero di record da selezionare. Si noti che il primo record è il numero 0 e non il numero 1, di conseguenza la prima riga estratta da questa query sarà la numero 10.
E’ ammessa anche la seguente sintassi, per compatibilità con PostgreSQL:
1SELECT * FROM NOME_TABELLA WHERE CONDIZIONE LIMIT 5 OFFSET 9
Quando si usa LIMIT è possibile sapere quante righe sarebbero state trovate se non si fosse utilizzata questa clausola. Facendo questo si potrebbe riscontrare un notevole rallentamento della query. Detta funzionalità è utile ad esempio quando si implementa un motore di ricerca e si vuole rendere noto all’utente quanti risultati sono presenti nel database o qual è il numero totale delle pagine di risultati. Per fare ciò occorre utilizzare il modificatore SQL_CALC_FOUND_ROWS, che dice a MySQL di calcolare il numero totale di risultati. Per leggere tale numero bisogna poi eseguire una seconda query.
LIMIT può essere usata anche con le istruzioni DELETE e UPDATE, per cancellare o aggiornare un certo numero di record per volta, o magari per eliminare i record più vecchi:
1DELETE FROM news ORDER BY data ASC LIMIT 10
Infine LIMIT può essere utilizzata per evitare che un comando venga eseguito, in modo che lanciandolo ci limiteremo a controllare che sia sintatticamente corretto:
1DELETE FROM utenti WHERE id BETWEEN 20 AND 30 LIMIT 0
Condividi su:
Esprimi un voto:
Argomenti chiave:

MySQL Report un tool di shell per tenere tutto sotto controllo