我們先來看看ROW_NUMBER()是幹什麼的.執行下面這段SQL語句:
SELECT [ReportID],[UserName], [ReportID],
[TimeStart], [TimeEnd],ROW_NUMBER() OVER (ORDER BY ReportID) AS RowNo
FROM [ExecutionLog]
執行結果如下圖所示:
很簡單,ROW_NUMBER() 就是生成一個順序的行號,而他生成順序的標準,就是後面緊跟的OVER(ORDER BY ReportID).現在,你看到了自定義分頁的影子了嗎?:)下面,我們看看怎麼具體應用這個RowNo進行分頁.
現在,假設我每一頁的數據是10條,我們就可以使用如下所示的SQL語句返回指定頁的數據:
@"
SELECT TOP 10 *
FROM
(
SELECT top 10 [InstanceName], [UserName], [ReportID],
[TimeStart], [TimeEnd],ROW_NUMBER() OVER (ORDER BY ReportID) AS RowNo
FROM [ExecutionLog]
) AS A
WHERE RowNo > " + pageIndex*10
pageIndex就是我們需要數據的頁數.很簡單,不是嗎?並且,這種方式幾乎沒有什麼限制,因爲他相當於對於任何檢索,都生成了一個新的排序列.我們就可以使用該列進行自定義分頁.
----2005.11.26 11:43 星期六