2009-04-27 7 views

Antwort

3

Da Sie SQL Server 2005 verwenden, können Sie die "neue" Funktion ROW_NUMBER() verwenden. Dadurch werden Sie 11 bis 20 geben die Zeile:

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 

Wenn Sie haben eine Menge von Datensätzen, mit TOP X in der inneren SELECT-Klausel kann bis die Dinge ein wenig beschleunigen, da es keine Verwendung Rückkehr 1000 Datensätze, wenn Sie sind geht auf Datensätze 11 bis 20 greifen:

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

Sie sollten verwenden ROWNUMBER() für die Rekordzahl von resultset bekommen und filtern es in dem Ursache.

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 | 
---------------------------- 
Verwandte Themen