我有一个数据库(SQL Server
)和应用程序,它可以获取数据并将其转换为JSON
。
我写了一个T-SQL
查询来按userid
列(DESC
)订购数据,并且只获取前10
行,但这会导致问题返回错误的结果。
例如,如果我有以下表格:
UserID
---
User1
User2
User3
...
User10
..
User25
我希望UserID
为DESC
并获得前10个结果(然后是第10个结果等)。简单的说我在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
。
答案 0 :(得分:3)
你在内部SELECT
中不需要它。
ROW_NUMBER
有自己的ORDER BY
,最终的演示文稿最后由最外面的ORDER BY
定义。
您当前的查询可以正常使用。