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

В следующем запросе:

SELECT column 
FROM table
LIMIT 18 OFFSET 8

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

Ответ 1

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

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

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

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

Ответ 2

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

Предложение LIMIT используется для ограничения количества результатов, возвращаемых в инструкции SQL. Итак, если у вас 1000 строк в таблице, но только хотите вернуть первые 10, вы бы сделали что-то вроде этого:

SELECT column 
FROM table
LIMIT 10

Это похоже на предложение TOP на Microsoft SQL Server. Однако предложение LIMIT всегда идет в конце запроса в MySQL и PostgreSQL.

Теперь предположим, что вы хотели показать результаты 11-20. С ключевым словом OFFSET это будет так же просто, следующий запрос будет делать:

SELECT column FROM table
LIMIT 10
OFFSET 10

Ответ 4

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