2011-03-18 42 views
2

我有一个数据库(SQL Server)和应用程序,它提取数据并将它们转换为JSONTSQL(SQL Server)使用row_number排序和分页

我写了一个T-SQL查询由userid柱(DESC)订购数据,并采取只有第一10行,但它会导致问题返回错误的结果。

举例来说,如果我有以下表格:

 UserID 
     --- 
     User1 
     User2 
     User3 
     ... 
     User10 
     .. 
     User25 

我想对UserIDDESC,并得到前十位的结果(当时第二十个结果,等等)。简单的说,我正在寻找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

回答

3

你不需要它在内部SELECT

ROW_NUMBER有它自己的ORDER BY,最后的演示文稿由最外层的ORDER BY定义。

您当前的查询将正常工作。 OMG!

+0

OMG!你是对的......没注意到......非常感谢!我需要掌握我的MSSQL skils ;-)我会尽快将其标记为答案。谢谢! – jackal 2011-03-18 21:19:23