Home
  • Recipes
  • Limitare il risultato di una query in MySQL l'operatore LIMIT
g2d
di g2d
pubblicato più di 2 anni fa

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.

1SELECT SQL_CALC_FOUND_ROWS * FROM utenti LIMIT 10, OFFSET 10;
2SELECT FOUND_ROWS();

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:

  • Current rating: 0.0/5
  • 1
  • 2
  • 3
  • 4
  • 5

Argomenti chiave:

Ultimi commenti Ultimi commenti

Esegui il Login oppure registrati per scrivere un commento.
Cerca nel sito...
Ultime recipes

Un utilissimo tool di shell che effettua un dettagliato e comodo report su MySQL MySQL Report un tool di shell per tenere tutto sotto controllo

Un utilissimo tool di shell che effettua un dettagliato e comodo report su MySQL


Vai alla recipe

Un utilissimo tool per sniffare il traffico Client/Server TCP/IP di MySQL MySQLSniffer sniffare il traffico TCP di MySQL

Un utilissimo tool per sniffare il traffico Client/Server TCP/IP di MySQL


Vai alla recipe

Verificare l'integrità, riparare gestire chiavi e memoria di tabelle MyISAM attraverso myisamchk riparare file MyISAM

Verificare l'integrità, riparare gestire chiavi e memoria di tabelle MyISAM attraverso il file myisamchk


Vai alla recipe

Un tool per comprimere le tabelle MyISAM fino a oltre il 50% myisampack comprimere file MyISAM

Un tool per comprimere le tabelle MyISAM fino a oltre il 50%


Vai alla recipe

mysqlshow le info di base sui database, tabelle e colonne senza utilizzare alcun mysqlshow visualizzare le informazioni sul database MySQL

mysqlshow le info di base sui database, tabelle e colonne senza utilizzare alcun client


Vai alla recipe

Utilizzando UNION / UNION ALL su campi int unsigned zerofill,
ho notato che MysqlUNION / UNION ALL su campi int unsigned zerofill. di DebUsr
Vai al tip

Utilizzo di funzioni come alias di campo tramite l'impiego di prepared statementReport con alias di campo dinamici di john_revelator
Vai al tip

Può capitare che sia necessario eseguire un dump di database in formato Comma SeparatedEsecuzione dump in formato CSV (tabelle in engine MyIsam esportate in formato CSV) di ghigomatto
Vai al tip

E' possibile eseguire le query SQL contenute in un file di testo. Questo è utileEseguire le query da un file di testo di Sante Caserio
Vai al tip

Se vogliamo fare il backup di tutti i database con mysqldump, e ne abbiamo parecchiFare il backup di tutti i database di Sante Caserio
Vai al tip

Salve,vorrei chiedervi un aiutino per una query che mi infastidisce un pò.
Ho 4 aiuto per una query! di fighterdorico Vai al topic

Salve,vorrei chiedervi un aiutino per una query che mi infastidisce un pò.
Ho 4 aiuto per una query! di fighterdorico Vai al topic

Salve,vorrei chiedervi un aiutino per una query che mi infastidisce un pò.
Ho 4 aiuto per una query! di fighterdorico Vai al topic

Salve a tutti.

Ho una tabella con lettere accentate.
Le lettere vengono visualizzate ordinamento tabelle di ditch Vai al topic

Salve a tutti.

Ho una tabella con lettere accentate.
Le lettere vengono visualizzate ordinamento tabelle di ditch Vai al topic