Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Получение n-ой записи из таблицы, упорядоченной по некому полю
|
|||
|---|---|---|---|
|
#18+
Приветствую! Есть таблица Users (UserID uniqueidentifier PRIMARY KEY NOT NULL DEFAULT NEWID(), Username varchar(255) NOT NULL) Есть выборка: SELECT UserID, Useraname FROM Users ORDER BY Username Вопрос: как найти UserID n-ой по счету записи в приведенной выборке? Вопрос, конечно, не совсем корректен, но суть видимо, ясна - получить UserID записи, которая будет n-ой если сортировать по Username. Естественно, без курсора. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2002, 08:49 |
|
||
|
Получение n-ой записи из таблицы, упорядоченной по некому полю
|
|||
|---|---|---|---|
|
#18+
это ,наверное, слишком вычурно, но чем можем, так сказать: select top 1 UserID from (select top n* from Users order by Username desc) t ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2002, 12:53 |
|
||
|
Получение n-ой записи из таблицы, упорядоченной по некому полю
|
|||
|---|---|---|---|
|
#18+
create table a (pk int identity(1,1) not null, orderby int, field nvarchar(255)) go insert into a (orderby,field) values (12,'001') insert into a (orderby,field) values (14,'002') insert into a (orderby,field) values (5,'003') insert into a (orderby,field) values (8,'004') insert into a (orderby,field) values (15,'005') insert into a (orderby,field) values (13,'006') insert into a (orderby,field) values (10,'007') go create procedure SeekRecordByNum @num int As DECLARE @PK int DECLARE @Sql nvarchar(255) If @num>(Select Count(*) from a) BEGIN Select * from a where 0=1 RETURN END Set @SQL='Select TOP '+CAST(@num as varchar(13))+' @PK=PK from a order by orderby' execute sp_executeSQL @SQL,N'@PK int OUTPUT',@PK OUTPUT Select TOP 1 * from a where PK=@PK Go exec SeekRecordByNum 1 exec SeekRecordByNum 2 exec SeekRecordByNum 6 exec SeekRecordByNum 100 drop table a drop procedure SeekRecordByNum ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2002, 13:15 |
|
||
|
Получение n-ой записи из таблицы, упорядоченной по некому полю
|
|||
|---|---|---|---|
|
#18+
Пардон, чуть ошибся, надо вот так: select top 1 User_id from( select top n* from Users order by Username)t order by Username desc ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2002, 13:48 |
|
||
|
Получение n-ой записи из таблицы, упорядоченной по некому полю
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы, но я имел ввиду без dynamic sql. Запрос вида select top n ... без dynamic sql не проходит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2002, 15:55 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32022330&tid=1824031]: |
0ms |
get settings: |
9ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
95ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
| others: | 255ms |
| total: | 449ms |

| 0 / 0 |
