2009-04-27 49 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 

如果你有很多的記錄,內部SELECT子句中使用TOP X,因爲沒有使用返回1000條記錄,如果你只可以加快事情有點經歷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 | 
----------------------------