Какие строки возвращаются при использовании LIMIT с OFFSET в MySQL?


145

В запросе ниже:

SELECT column 
FROM table
LIMIT 18 OFFSET 8

сколько результатов мы получим на выходе и откуда?


2
Заказ должен быть сначала LIMIT, а затем OFFSET. Если нет, это вызовет ошибку.
Mouser

Ответы:


196

Он вернет 18 результатов, начиная с записи №9 и заканчивая записью №26.

Начните с чтения запроса из offset. Сначала вы компенсируете на 8, что означает, что вы пропускаете первые 8 результатов запроса. Затем вы ограничиваете их числом 18. Это означает, что вы рассматриваете записи 9, 10, 11, 12, 13, 14, 15, 16 .... 24, 25, 26, которые в общей сложности составляют 18 записей.

Проверьте это .

А также официальная документация .


Вы правы, есть ли разница ч / б предел 8,18 и лимит 18 смещение 8
Арун Киллу

28
Нет, это то же самое. LIMIT 8, 18это просто ярлык :)
Мосты Мостачо

1
Лучший ответ, поскольку я тоже был сбит с толку, я думал, что он возвращает данные между двумя цифрами, но теперь все ясно :)
MR_AMDEV

50

OFFSET не что иное, как ключевое слово для обозначения начального курсора в таблице

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

вы получите ту же форму результата

SELECT column FROM table LIMIT 8, 18

визуальное представление ( Rодна запись в таблице в некотором порядке)

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.