Które wiersze są zwracane, gdy używasz LIMIT z OFFSET w MySQL?

140

W poniższym zapytaniu:

SELECT column 
FROM table
LIMIT 18 OFFSET 8

ile wyników otrzymamy jako wyjście i skąd dokąd?

Arun Killu
źródło
Zamówienie musi mieć wartość najpierw LIMIT, a następnie OFFSET. Jeśli nie, spowoduje to wyświetlenie błędu.
Mouser

Odpowiedzi:

189

Zwróci 18 wyników, zaczynając od rekordu nr 9, a kończąc na rekordzie nr 26.

Zacznij od przeczytania zapytania z offset. Najpierw przesuwasz o 8, co oznacza, że ​​pomijasz pierwsze 8 wyników zapytania. Następnie ograniczasz do 18. Co oznacza, że ​​bierzesz pod uwagę rekordy 9, 10, 11, 12, 13, 14, 15, 16… 24, 25, 26, które łącznie stanowią 18 rekordów.

Spójrz na to .

A także oficjalna dokumentacja .

Mosty Mostacho
źródło
u są poprawne, czy jest jakaś różnica w
trybie czarno-białym,
26
Nie, to jest to samo. LIMIT 8, 18to tylko skrót :)
Mosty Mostacho
1
Najlepsza odpowiedź, ponieważ byłem również zdezorientowany, myślałem, że zwraca dane między dwiema cyframi, ale teraz jest jasne :)
MR_AMDEV
47

OFFSET to nic innego jak słowo kluczowe wskazujące kursor początkowy w tabeli

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

otrzymasz ten sam formularz wyniku

SELECT column FROM table LIMIT 8, 18

reprezentacja wizualna ( Rto jeden rekord w tabeli w jakiejś kolejności)

 OFFSET        LIMIT          rest of the table
 __||__   _______||_______   __||__
/      \ /                \ /
RRRRRRRR RRRRRRRRRRRRRRRRRR RRRR...
         \________________/
                 ||
             your result
winorośl
źródło
3

Otrzymasz wynik od columnwartości 9 do 26, jak wspomniałeśOFFSET jako 8

Mahesh Patil
źródło