TSQL (SQL Server) Сортировка и разбиение по страницам с row_number - PullRequest
2 голосов
/ 19 марта 2011

У меня есть база данных (SQL Server) и приложение, которое извлекает данные и преобразует их в JSON.

Я написал запрос T-SQL, чтобы упорядочить данные по столбцу userid (DESC) и взять только первые 10 строки, но это вызывает проблему с возвратом неправильных результатов.

ДляНапример, если у меня есть следующая таблица:

      UserID
      ---
      User1
      User2
      User3
      ...
      User10
      ..
      User25

Я хочу, чтобы UserID было DESC и получить первые десять результатов (затем вторые десять результатов и т. д.).Проще говоря, я ищу MySQL LIMIT замену в SQL Server.

Мой запрос

SELECT * FROM 
   (SELECT  
       system_users_ranks.RankName,
       system_users.userid,
       system_users.UserName,
       system_users.Email, 
       system_users.LastIP, 
       system_users.LastLoginDate,
       row_number() OVER (ORDER BY system_users.userid) as myrownum
    FROM     
       system_users 
    INNER JOIN
       system_users_ranks 
       ON system_users.UserRank = system_users_ranks.rankid 
   ) as dertbl  
WHERE myrownum BETWEEN @startval AND @endval 
ORDER BY userid DESC

Я не могу переместить ORDER BY во внутреннюю SELECT.

1 Ответ

3 голосов
/ 19 марта 2011

Вам это не нужно во внутреннем SELECT.

ROW_NUMBER имеет свой собственный ORDER BY, и окончательное представление все равно определяется самым внешним ORDER BY.

Ваш текущий запрос будет работать нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...