2009-04-27 4 views

답변

3

SQL Server 2005를 사용하고 있으므로 "새로운"ROW_NUMBER() 함수를 사용할 수 있습니다. 이것은 당신이 행 줄 것이다 11 ~ 20 :

SELECT Description, Date 
FROM  (SELECT ROW_NUMBER() OVER (ORDER BY Date DESC) 
      AS Row, Description, Date FROM LOG) 
      AS LogWithRowNumbers 
WHERE Row >= 11 AND Row <= 20 

당신은 당신이 유일한 경우 1000 개 개의 레코드를 반환 아무 소용이 없기 때문에 사물을 약간의 속도가 빨라질 수 있습니다 내부 SELECT 절에서 TOP X를 사용하여 기록이 많이있는 경우 (20)를 통해 기록 (11)을 잡아 것 :

SELECT Description, Date 
FROM  (SELECT TOP 20 ROW_NUMBER() OVER (ORDER BY Date DESC) 
      AS Row, Description, Date FROM LOG) 
      AS LogWithRowNumbers 
WHERE Row >= 11 AND Row <= 20 

Source

1

당신은 결과 집합의 레코드 번호를 얻기위한 ROWNUMBER()를 사용 어디에 원인에 필터링한다.

SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY name) AS 
rownum, name , age FROM Table) AS Table1 
WHERE rownum >= 2 AND rownum <= 5 

---------------------------- 
rownum  | name | age | 
---------------------------- 
    2  |John | 25 | 
    3  |Adam | 23 | 
    4  |Tom  | 19 | 
    5  |Jame | 22 | 
---------------------------- 
관련 문제