limit в MS SQL

_RVK_

Новичок
limit в MS SQL

Как в MS SQL добиться такого же эфекта какой даёт limit в MySQL. Есть ли стандартные конструкции языка для этого?
 

Vladez

Guest
SET ROWCOUNT
Causes Microsoft® SQL Server™ to stop processing the query after the specified number of rows are returned.

но лучше использовать SELECT TOP X[%] ...
например,
SELECT TOP 10 UserName
FROM Users
WHERE Rating > 1000 AND GameType = 'SEXP'
ORDER BY Rating DESC
в результате получаем не более 10-и записей
 

_RVK_

Новичок
Автор оригинала: Vladez
SET ROWCOUNT
Causes Microsoft® SQL Server™ to stop processing the query after the specified number of rows are returned.

но лучше использовать SELECT TOP X[%] ...
например,
SELECT TOP 10 UserName
FROM Users
WHERE Rating > 1000 AND GameType = 'SEXP'
ORDER BY Rating DESC
в результате получаем не более 10-и записей
Да понятно. Нужно получить пкрвые X записей и посмотреть id последней и далее выбирать те же X но WHERE id>последнего id в предидущем запросе. ну и естественно ORDER BY id DESC.
Блин, неудобно как то. Нужно LIMIT в стандарт включить....
 

_RVK_

Новичок
Проблема не решена. Дело в том что id идут не по порядку ведь данные могут удалятся.... Поэтому приходится сначала делать несколько запросов что бы узнать все id дял условия. А это нерационально. например в базе 2000 записей. На странице 20 записей. поэтому нужно сделать 100 запросов (если выводить все ссылки). Я что то не так делаю? Поделитесь опытом те кто уже далал постраничный вывод в MS SQL
 

Crazy

Developer
1. Запрашиваем ВСЕ первичные ключи.
2. Выбираем 20, которые попали на страницу.
3. Запрашивает 20 соответствующих записей.

Итого 2 запроса.
 
Сверху