2011-03-18 43 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