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
93

Также есть смещение, которое должно помочь:

SELECT column FROM table
LIMIT 10 OFFSET 10
Джеймсахарви
источник
7
легче понять, чемlimit 10,10
Shellbye
41

OFFSET - это то, что вы ищете.

SELECT * FROM table LIMIT 10 OFFSET 10
TRiG
источник
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
Бисваджит Пол
источник