Quelles lignes sont renvoyées lors de l'utilisation de LIMIT avec OFFSET dans MySQL?

140

Dans la requête ci-dessous:

SELECT column 
FROM table
LIMIT 18 OFFSET 8

combien de résultats obtiendrons-nous en sortie et d'où et où?

Arun Killu
la source
L'ordre doit d'abord être LIMIT, puis OFFSET. Sinon, cela provoquera une erreur.
Mouser

Réponses:

189

Il renverra 18 résultats en commençant par l'enregistrement n ° 9 et en terminant par l'enregistrement n ° 26.

Commencez par lire la requête à partir de offset. Vous commencez par décaler de 8, ce qui signifie que vous ignorez les 8 premiers résultats de la requête. Ensuite, vous limitez par 18. Ce qui signifie que vous considérez les enregistrements 9, 10, 11, 12, 13, 14, 15, 16 .... 24, 25, 26 qui sont un total de 18 enregistrements.

Vérifiez ceci .

Et aussi la documentation officielle .

Mosty Mostacho
la source
Vous avez raison, y a-t-il une différence entre la limite de b / w 8,18 et la limite 18 offset 8
Arun Killu
26
Non, c'est pareil. LIMIT 8, 18est juste un raccourci :)
Mosty Mostacho
1
Meilleure réponse car j'étais également confus, je pensais qu'il renvoie les données entre les deux chiffres mais maintenant c'est clair :)
MR_AMDEV
47

OFFSET n'est rien d'autre qu'un mot-clé pour indiquer le curseur de départ dans le tableau

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

vous obtiendriez le même formulaire de résultat

SELECT column FROM table LIMIT 8, 18

représentation visuelle ( Rest un enregistrement dans le tableau dans un certain ordre)

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

Vous obtiendrez une sortie de la columnvaleur 9 à 26 comme vous l'avez mentionné OFFSETcomme 8

Mahesh Patil
la source