Подтвердить что ты не робот

Как получить ВСЕ строки, начиная с строки x в MySQL

В MySQL, как я могу получить ВСЕ строки в таблице, начиная с строки X? Например, начиная с строки 6:

LIMIT 5,0

Это ничего не возвращает, поэтому я пробовал это:

LIMIT 5,ALL

По-прежнему нет результатов (ошибка sql).

Я не ищу функциональность разбиения на страницы, просто получая все строки, начиная с определенной строки. LIMIT 5,2000 кажется мне излишним. Почему-то Google, похоже, не дает мне ответов. Надеюсь, ты поможешь.

Спасибо

4b9b3361

Ответ 1

В соответствии с документацией:

Чтобы получить все строки с определенного смещения до конца результирующего набора, вы можете использовать некоторое большое число для второго параметра. Этот оператор извлекает все строки из 96-й строки до последней:

SELECT * FROM tbl LIMIT 95, 18446744073709551615;

Это максимальные строки, которые может содержать таблица MyISAM, 2 ^ 64-1.

В таблице MyISAM существует предел строк 2 ^ 32 (~ 4.295E + 09). Если вы создаете MySQL с опцией --with-big-tables, ограничение строки увеличивается до (2 ^ 32) ^ 2 (1,844E + 19) строк. См. Раздел 2.16.2, "Типичные параметры настройки". Бинарные дистрибутивы для Unix и Linux построены с этой опцией.

Ответ 2

Если вы хотите получить последнее число x строк, проще всего сделать это SORT DESC и LIMIT для первых x строк. Конечно, SORT замедлит ваш запрос. Но если вы возражаете против установки произвольно большого числа в качестве второго аргумента LIMIT, то это способ сделать это.

Ответ 3

Единственное решение, о котором я знаю в настоящее время, - это делать, как вы говорите, и давать смехотворно большое число в качестве второго аргумента LIMIT. Я не верю, что есть какая-либо разница в производительности с указанием небольшого числа или большого числа, mysql просто прекратит возвращать строки в конце набора результатов или когда он достигнет вашего предела.

Ответ 4

Я думаю, вам не нужно вводить максимальное значение для выбора всего с помощью LIMIT. Достаточно найти счетчик таблицы, а затем использовать его как max LIMIT.

Ответ 5

Следующий запрос должен работать и, по-моему, более эффективен...

SELECT * FROM mytbl WHERE id != 1 ORDER BY id asc

Заказывая запрос, он сразу найдет идентификатор и пропустит его, поэтому в следующих строках он больше не будет проверять, будет ли id = 1.