SQL Server 2008查询 - 从JSF分页

时间:2012-03-20 15:43:57

标签: sql sql-server

我是SQL Server 2008的新手,我需要一些帮助来查询我的JSF页面上的分页逻辑。

这是我的问题:

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

我第一次只需要从db获取100条记录,当用户点击我的JSF页面上的下一条记录时,我只需要获取下一条100条记录。我一直跟踪页面上的用户点击,即下一个和上一个按钮。

感谢您的时间。

1 个答案:

答案 0 :(得分: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 *,请将其替换为您需要返回的实际列。