Достать Id записи, при известном порядковом номере по алфавиту

Чайничище
Дата: 28.02.2010 13:44:01
Допустим, есть таблица: ID, name.
Юзеру прилетает список из этой таблицы с упорядоченным Name по алфавиту
(ID на клиент не дается)
он выбирает допустим 123 запись по алфавиту
как бы быстрее зная, что он выбрал 123 запись order by Name, определеить ID этого Name?
То есть одним запросом без курсоров.
Чайничище
Дата: 28.02.2010 14:10:28
Похоже, что в 2000-м никак - только через курсор... Но это медленно...
Придется создавать отдельное поле где, выставить номер по алфавиту и по нему буду искать id тогда...
iljy
Дата: 28.02.2010 14:29:22
Чайничище,
есть несколько вариантов:
select top 1 * from Table t1
where (select COUNT(*) from Table t2 where t2.Name <= t1.Name) = 123
select top 1 *
from 
(select top 200 * from Table order by Name asc) t
order by Name desc
Но оно все работает только если Name уникально. Хотя если оно не уникально - я так понимаю вообще гарантий повторяемости результатов сортировки нет.
Taffy
Дата: 28.02.2010 14:39:20
Чайничище,

1. а почему нельзя на клиент список с кодом сразу?
2. не факт что в выборке имен 123 запись соответствует 123 записи из таблицы (даже упорядоченной так же как список) потому что у клиента мог быть не весь список
3. если имена не уникальны - id будет случайным для повторяющихся имен
iljy
Дата: 28.02.2010 15:00:19
Taffy
Чайничище,

1. а почему нельзя на клиент список с кодом сразу?
2. не факт что в выборке имен 123 запись соответствует 123 записи из таблицы (даже упорядоченной так же как список) потому что у клиента мог быть не весь список
3. если имена не уникальны - id будет случайным для повторяющихся имен


+1.
А еще - может получится шикарно если в таблице произошли изменения Так что передавайте ИД на клиента (я надеюсь он уникальный и неизменный?) и не изобретайте велосипед.
Чайничище
Дата: 28.02.2010 15:17:58
2 All, когда пронумеровал, тоже пришел к этим же выводам и уже передаю ID на клиента :)
Всем спасибо :)