2011-03-18 5 views
2

데이터를 가져 와서 JSON으로 변환하는 데이터베이스 (SQL Server)와 app가 있습니다. TSQL (SQL Server) row_number로 정렬 및 페이징

나는 userid 열 ( DESC)에 의해 데이터를 주문 만 먼저 10 행을하는 T-SQL 쿼리를 작성하지만 잘못된 결과를 반환 문제가 발생합니다. 나는 테이블에 다음과 같은 경우 예를 들어

는 :

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

나는 UserID에 (등 다음 두 번째 열 개 결과) DESC를하고 처음 10 개 결과를 얻을 싶어요. 단순한 말은 대신에 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 

나는 내부 SELECTORDER BY을 이동할 수 없습니다.

답변

3

내부에는 SELECT이 필요하지 않습니다.

ROW_NUMBER은 고유 한 ORDER BY을 가지며 최종 프리젠 테이션은 어쨌든 가장 바깥 쪽 ORDER BY으로 정의됩니다.

현재 검색어는 정상적으로 작동합니다.

+0

OMG! 당신 말이 맞아 ... 고맙습니다. 고맙습니다! 내 MSSQL skils를 마스터해야합니다 ;-) 나는 최대한 빨리 응답으로 표시 할 것입니다. 고마워! – jackal