• Авторизация


Аналог LIMIT в MSSQL 09-02-2006 18:28 к комментариям - к полной версии - понравилось!


Часто возникает задача постраничного вывода записей чего-либо. При этом сами данные лежат в базе данных. Если в качестве сервера используется MySQL, то само собой разумеется использование LIMIT.

Однако в MSSQL встроенного LIMIT'а нет. Вот одно из простейших решений SQL-запроса для выборки записей, соответствующих одной странице.

SELECT TOP записей_на_страницу FROM table_name
WHERE поле_идентификатор_записи NOT IN (
SELECT TOP номер_страницы * записей_на_страницу поле_идентификатор_записиe FROM table_name ORDER BY сортируемое_поле) ORDER BY сортируемое_поле

Нумерация страниц здесь ведется с нуля. Если вы будете нумеровать их с единицы, следует заменить
номер_страницы * записей_на_страницу
на
(номер_страницы - 1) * записей_на_страницу

Конечно, в самом запросе этих двух множителей быть не должно. Там должно быть число, которое получается в результате перемножения.

А как вы реализуете аналоги LIMIT'а в MSSQL?
вверх^ к полной версии понравилось! в evernote
Комментарии (2):
holy_diver 09-02-2006-20:14 удалить
SELECT TOP записей_на_страницу FROM table_name
WHERE поле_идентификатор_записи > номер_страницы * записей_на_страницу
?
rum 09-02-2006-20:51 удалить
Неуниверсально. Ваш способ не позволит выбирать сортируемое поле. Только по айдишнику.


Комментарии (2): вверх^

Вы сейчас не можете прокомментировать это сообщение.

Дневник Аналог LIMIT в MSSQL | web_development - Веб-разработка | Лента друзей web_development / Полная версия Добавить в друзья Страницы: раньше»