2012-03-20 54 views
1

我是SQL Server 2008的新手,我需要一些幫助來查詢我的JSF頁面上的分頁邏輯。SQL Server 2008查詢 - 從JSF分頁

這裏是我的查詢:

select * 
from ShipmentHistory sh 
where sh.CCIPortID in ? 
order by sh.TrackingNumber, sh.CreateTimeStamp 

的第一次,我需要不斷的用戶點擊下一個我的JSF頁面上,我需要下一個100個記錄獲取從資料庫,當得到的只有100條記錄。我們會跟蹤用戶在頁面上的點擊,即下一個和上一個按鈕。

謝謝你的時間。

+0

搜索「SQL Server分頁」,你會發現[很多](http://stackoverflow.com/questions/109232/what-is-the-best-way-to-paginate-results-in- sql-server)[回覆](http://www.codeproject.com/Articles/12338/Using-ROW_NUMBER-to-paginate-your-data-with-SQL-Se) – Andomar 2012-03-20 15:51:25

回答

3

首先,您需要對結果集進行計數,以瞭解您有多少記錄總數以及多少頁將顯示數據。

接下來,您需要指定要檢索的開始行和結束行,然後使用類似於以下的查詢來拉取結果的大塊。

SELECT * FROM (
    SELECT 
     *, 
     ROW_NUMBER() OVER (ORDER BY sh.TrackingNumber, sh.CreateTimeStamp) AS rn, 
    FROM ShipmentHistory sh 
    WHERE sh.CCIPortID in ? 
) AS ordered 
WHERE rn >= @startRow AND rn < @endRow 

注:請不要使用SELECT *,與您需要返回的實際列替換此。

+1

謝謝Michael Fredrickson。感謝您的時間... – userJ 2012-03-20 16:02:26

+0

謝謝Andomar – userJ 2012-03-20 16:03:48