我是SQL Server 2008的新手,我需要一些帮助来查询我的JSF页面上的分页逻辑。
这是我的问题:
select *
from ShipmentHistory sh
where sh.CCIPortID in ?
order by sh.TrackingNumber, sh.CreateTimeStamp
我第一次只需要从db获取100条记录,当用户点击我的JSF页面上的下一条记录时,我只需要获取下一条100条记录。我一直跟踪页面上的用户点击,即下一个和上一个按钮。
感谢您的时间。
答案 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 *
,请将其替换为您需要返回的实际列。