Страница 1 из 1

Дурацкий вопрос про MS SQL Server

Добавлено: 08 июн 2005, 10:32
Vovchik
Вопрос противоречащий всем основам реляциоонной теории.
Скажем есть таблица. В ней скажем есть миллион записей. Из этой таблицы с помощью запроса выбирается 10 тыс каких то там записей. Так вот есть ли какой нить способ элегантно вытащить одну (одну!) запись из этих 10 тыс которая скажем находится на месте номер 1245 в этом результируещем запросе? Скажем слово TOP позволяем получить первую или 50 первых. А вот одну в определенном порядке?

Можно конечно выдрать все 10 тыс записей в клиентское приложение, там они засунуться в объект, в объекте все строки пронумерованы и все элементарно. ТОка вот ежели записей скажем будет 200 тыс то клиент могет крякнуться...

В общем теоретическая постановка задачи такова - заставить сервер теоретически рассчиать результирубщий набор (как в курсоре), пронумеровать строки, найти идентификатор стороки в таблице по заданному номеру строки в курсоре (наборе) пихнуть одну такую. строку куда надо.

Добавлено: 08 июн 2005, 11:14
Donskoy Melnik
Yes, nested selects, reverse sort order...

select top 1 * from (select top 1435 * from policy order by policy_id) as p order by p.policy_id desc

Gives you the 1435th record in policy table. Is that what you need?

Добавлено: 08 июн 2005, 11:28
Vovchik
Donskoy Melnik писал(а):Yes, nested selects, reverse sort order...

select top 1 * from (select top 1435 * from policy order by policy_id) as p order by p.policy_id desc

Gives you the 1435th record in policy table. Is that what you need?
Yep! Thanks a lot!

MSSQL

Добавлено: 08 июн 2005, 21:23
Yuri Dimant
Vovchikубедись что твои индех в порядке.
Другои пример на NorthWind database

SELECT <column lists> FROM Orders WHERE 8=(SELECT COUNT(*) FROM Orders o
WHERE O.orderId<=Orders.Orderid)
ORDER BY Orderid DESC

Re: MSSQL

Добавлено: 09 июн 2005, 07:26
Donskoy Melnik
That's a different task.