Какие строки возвращаются при использовании 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
виноградник
источник
3

Вы получите результат от columnзначения 9 до 26, как вы упомянули OFFSETкак 8

Махеш Патил
источник