MySQL пропустить первые 10 результатов


102

Есть ли способ в MySQL пропустить первые 10 результатов запроса SELECT? Я бы хотел, чтобы работало что-то вроде LIMIT.


7
во всех ответах здесь отсутствует предложение ORDER BY. Таблицы SQL не имеют порядка по умолчанию, и без явного ORDER BY невозможно определить, какие первые 10 результатов следует пропустить
fthiella 05

Ответы:


126

Используйте LIMIT с двумя параметрами. Например, чтобы вернуть результаты 11-60 (где результат 1 - первая строка), используйте:

SELECT * FROM foo LIMIT 10, 50

Чтобы узнать, как вернуть все результаты, см. Ответ Томаса .


Что, если между указанным вами числом будет удалено несколько строк.
Alex



33

Из руководства :

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

SELECT * FROM tbl LIMIT 95,18446744073709551615;

Очевидно, вам следует заменить 95на 10. Кстати, большое число они используют 2 ^ 64 - 1.


6

LIMIT позволяет пропускать любое количество строк. У него два параметра, и первый из них - сколько строк пропустить.


Это дало мне понять, что "What is Offset" Спасибо @Col. Shrapnel
OM The Eternity

2
select * from table where id not in (select id from table limit 10)

где idбыть ключом в твоей таблице.


Это полезно и быстро сделать для impala и других баз данных, где ограничение со смещением требует аргумента порядка, что не всегда желательно.
KarthikS

-5

Если в вашей таблице есть упорядочивание по идентификатору, вы можете легко это сделать:

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