Які рядки повертаються при використанні LIMIT з OFFSET в MySQL?


140

У запиті нижче:

SELECT column 
FROM table
LIMIT 18 OFFSET 8

скільки результатів ми отримаємо як вихід і звідки куди?


Спочатку замовлення має бути LIMIT, а потім OFFSET. Якщо ні, то це призведе до помилки.
Mouser

Відповіді:


189

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

Почніть з читання запиту з offset. Спочатку ви компенсуєте 8, а це означає, що ви пропускаєте перші 8 результатів запиту. Тоді ви обмежуєтесь на 18. Що означає, що ви вважаєте записи 9, 10, 11, 12, 13, 14, 15, 16 .... 24, 25, 26, що становить загалом 18 записів.

Перевірте це .

А також офіційну документацію .


ви правильні, чи є різниця в / з обмеження 8,18 та межа 18 зміщення 8
Арун Кіллу

26
Ні, це те саме. LIMIT 8, 18це лише ярлик :)
Мості Мостачо

1
Найкраща відповідь, оскільки я також був розгублений, я думав, що він повертає дані між двома цифрами, але тепер його зрозуміло :)
MR_AMDEV

47

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.