我有一个数据库( 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
.
最佳答案
您不需要在内部SELECT
中使用它。
ROW_NUMBER
有自己的 ORDER BY
,最终的呈现方式无论如何都是由最外层的 ORDER BY
定义的。
您当前的查询将正常工作。
关于sql-server - TSQL (SQL Server) 使用 row_number 进行排序和分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5357857/