sql-server - TSQL (SQL Server) 使用 row_number 进行排序和分页

标签 sql-server t-sql pagination

我有一个数据库( 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/

相关文章:

sql - 为什么此查询失败并显示 "Cannot convert a char value to money. "

SQL Server 邮件变量的使用

sql从 "record per month"转换为 "record from/until"

php - 分页工作正常但出现错误

php - 使用 PHP `mysql_data_seek` 和代码而不是 SQL `LIMIT` 来限制分页结果是否明智?

mysql - 优化分页的 DISTINCT/LIMIT MySQL 查询

java - 需要更好的算法来使用 Java 清理 SQL Server 表

sql-server - T-SQL : How can I compare two variables of type XML when length > VarChar(MAX)?

sql-server - 不使用透视选项在 SQL 表中转出数据

sql-server - SQL 服务器的最佳 RAID 设置