Quali righe vengono restituite quando si utilizza LIMIT con OFFSET in MySQL?


140

Nella query seguente:

SELECT column 
FROM table
LIMIT 18 OFFSET 8

quanti risultati otterremo come output e da dove a dove?


L'ordine deve essere prima LIMIT, quindi OFFSET. Altrimenti genererà un errore.
Mouser,

Risposte:


189

Restituirà 18 risultati a partire dal record n. 9 e finendo nel record n. 26.

Inizia leggendo la query da offset. Per prima cosa compensi di 8, il che significa che salti i primi 8 risultati della query. Quindi si limita di 18. Ciò significa che si considerano i record 9, 10, 11, 12, 13, 14, 15, 16 .... 24, 25, 26 per un totale di 18 record.

Controllare questo fuori.

E anche la documentazione ufficiale .


hai ragione, c'è qualche differenza b / n limite 8,18 e limite 18 offset 8
Arun Killu

26
No, è lo stesso LIMIT 8, 18è solo una scorciatoia :)
Mosty Mostacho,

1
La migliore risposta dato che ero anche confuso pensavo che restituisse i dati tra le due cifre ma ora è chiaro :)
MR_AMDEV

47

OFFSET non è altro che una parola chiave per indicare il cursore iniziale nella tabella

SELECT column FROM table LIMIT 18 OFFSET 8 -- fetch 18 records, begin with record 9 (OFFSET 8)

otterresti lo stesso modulo di risultato

SELECT column FROM table LIMIT 8, 18

rappresentazione visiva ( Rè un record nella tabella in un certo ordine)

 OFFSET        LIMIT          rest of the table
 __||__   _______||_______   __||__
/      \ /                \ /
RRRRRRRR RRRRRRRRRRRRRRRRRR RRRR...
         \________________/
                 ||
             your result

3

Otterrai un output dal columnvalore 9 al 26 come hai menzionato OFFSETcome 8

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.