Сергей Сциборций
Сергей Сциборций | Репутация: 106 (Кандидат) 7 августа 2008 в 18:42
В sql есть возможность получить первые n подходящих результатов(select * top n...), а как получить затем следующие n?
Александра Чурилова
Александра Чурилова | Репутация: 108 (Кандидат) 8 августа 2008 в 07:37

Если я правильно поняла вопрос, то следующий запрос может выглядеть примерно так:
SELECT * FROM имя_таблицы WHERE условия ORDER BY имя_поля LIMIT n OFFSET m;
Где n - это необходимое количество записей, а m - это позиция, с которой необходимо их брать.

Виктор Конопелько
Виктор Конопелько | Репутация: 131 (Кандидат) 8 августа 2008 в 12:09

Вдобавок к предложенному FiX-ом способу, можно воспользоваться следующей конструкцией (MySQL Reference):
SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15
(То бишь извлекаем 10 записей, пропуская первые пять)
Там же (в reference)  сказано, что выражение "LIMIT row_count" эквивалентно "LIMIT 0, row_count", а
"LIMIT row_count OFFSET offset" существует для совместимости с PostgreSQL.
Стоит также сказать, что в Oracle предложения LIMIT нет.
Вместо него нужно использовать предложение ROWNUM.