TSQL(SQL Server)使用row_number排序和分页
问题描述:
我有一个数据库(SQL Server
)和应用程序,它提取数据并将它们转换为JSON
。TSQL(SQL Server)使用row_number排序和分页
我写了一个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
。
答
你不需要它在内部SELECT
。
ROW_NUMBER
有它自己的ORDER BY
,最后的演示文稿由最外层的ORDER BY
定义。
您当前的查询将正常工作。 OMG!
OMG!你是对的......没注意到......非常感谢!我需要掌握我的MSSQL skils ;-)我会尽快将其标记为答案。谢谢! – jackal 2011-03-18 21:19:23