【问题标题】:TSQL (SQL Server) Sorting and paging with row_numberTSQL (SQL Server) 使用 row_number 进行排序和分页
【发布时间】: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


    【解决方案1】:

    你不需要在内部SELECT

    ROW_NUMBER 有自己的ORDER BY,反正最后的呈现是由最外层的ORDER BY 定义的。

    您当前的查询可以正常工作。

    【讨论】:

    • 天啊!你说得对……没有注意到……非常感谢!我需要掌握我的 MSSQL 技能 ;-) 我会尽快将其标记为答案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 2021-10-23
    • 2013-08-06
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    相关资源
    最近更新 更多