Нужен запрос
От: Igor32  
Дата: 11.09.03 22:01
Оценка:
Мне нужно сделать выборку строк из таблицы — ограниченное количество и не с начала

Например, select top 10 * from tabl возращает первые десять строк. Но, допустим, потом мне нужно выбрать следующие десять строк. На ИД ориентироваться нельзя — они не по порядку. Как сделать?
Re: Нужен запрос
От: Sinclair Россия https://github.com/evilguest/
Дата: 11.09.03 22:20
Оценка: 3 (1)
Здравствуйте, Igor32, Вы писали:

I>Но, допустим, потом мне нужно выбрать следующие десять строк. На ИД ориентироваться нельзя — они не по порядку. Как сделать?

Порыться в этом форуме. Есть такая дискуссия:
http://www.rsdn.ru/forum/Message.aspx?mid=112178
Автор: voland
Дата: 10.10.02
... << RSDN@Home 1.1 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Нужен запрос
От: Adony  
Дата: 12.09.03 05:14
Оценка: 3 (1)
Здравствуйте, Igor32, Вы писали:

I>Мне нужно сделать выборку строк из таблицы — ограниченное количество и не с начала


I>Например, select top 10 * from tabl возращает первые десять строк. Но, допустим, потом мне нужно выбрать следующие десять строк. На ИД ориентироваться нельзя — они не по порядку. Как сделать?


здесь
Re: Нужен запрос
От: Воронков Василий Россия  
Дата: 12.09.03 08:24
Оценка: 3 (1)
Здравствуйте, Igor32, Вы писали:

I>Мне нужно сделать выборку строк из таблицы — ограниченное количество и не с начала


I>Например, select top 10 * from tabl возращает первые десять строк. Но, допустим, потом мне нужно выбрать следующие десять строк. На ИД ориентироваться нельзя — они не по порядку. Как сделать?


Вообще если тебе нужно только движение вперед по таблице, то сделать это довольно просто — надо только запоминать id последней записи в выборке. Допустим если в первой выборке 10 строк id последней записи 14, то запрос

select top 10 * from tabl where id > 14


и так далее в таком же ключе.
Если требуется движение в обе стороны, то нужно запоминать все id, допустим, в ArrayList и модифицировать запрос по типу

select top 10 * from tabl where id < 25 and id > 14


Достоинство этого способа — несмотря на его некоторую, ну ты понимаешь — в том что он является универсальным для любого SQL Server'a и к тому же куда более производительным, чем

SELECT TOP 10 * FROM tabl 
WHERE id NOT IN (SELECT TOP 10 id FROM tabl ORDER BY id) ORDER BY id
... << RSDN@Home 1.1 beta 2 >>
Re[2]: Нужен запрос
От: Adony  
Дата: 12.09.03 08:55
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Здравствуйте, Igor32, Вы писали:


I>>Мне нужно сделать выборку строк из таблицы — ограниченное количество и не с начала


I>>Например, select top 10 * from tabl возращает первые десять строк. Но, допустим, потом мне нужно выбрать следующие десять строк. На ИД ориентироваться нельзя — они не по порядку. Как сделать?


ВВ>Вообще если тебе нужно только движение вперед по таблице, то сделать это довольно просто — надо только запоминать id последней записи в выборке. Допустим если в первой выборке 10 строк id последней записи 14, то запрос



Ой ли?
А если набор отсортирован не по ID, тогд как быть с запоминанием последней записи?! а главное дальнейшее сравнение с ним
Re[3]: Нужен запрос
От: Воронков Василий Россия  
Дата: 12.09.03 09:09
Оценка:
Здравствуйте, Adony, Вы писали:

A>Ой ли?

A>А если набор отсортирован не по ID, тогд как быть с запоминанием последней записи?! а главное дальнейшее сравнение с ним

ОК, я поправляюсь. Вышеописанный способ действует только в том случае, если набор не сортируется по к-либо иному полю, кроме id. Я ж тут не панацею предлагаю. К тому же автор первого поста не указывал, что записи сортируются по к-либо полю. Явно он упомянул бы об этом, если бы это было так.
... << RSDN@Home 1.1 beta 2 >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.