【发布时间】:2011-07-18 11:44:39
【问题描述】:
我有一个数据库 (SQL Server) 和应用程序,它获取数据并将其转换为 JSON。
我编写了一个 T-SQL 查询以按 userid 列 (DESC) 对数据进行排序,并且只获取第一行 10 行,但这会导致返回错误结果的问题。
例如,如果我有下表:
UserID
---
User1
User2
User3
...
User10
..
User25
我想UserID 成为DESC 并获得前十个结果(然后是后十个结果,等等)。简单地说我在SQL Server 中寻找MySQL LIMIT 替代品。
我的查询
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。
【问题讨论】:
标签: sql-server tsql pagination