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