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?


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 .


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.