StartRowIndex和MaximumRows 的算法
在网上查到的是
比如说有三页
第一页 0 * 10 + 1
对第二页来说(索引为 1), 第一行的索引为1 * 10 + 1,即 11.
按这个算 这个SQL语句就行了
SELECT PriceRank, ProductName, UnitPrice
FROM
(SELECT ProductName, UnitPrice,
ROW_NUMBER() OVER(ORDER BY UnitPrice DESC) AS PriceRank
FROM Products
) AS ProductsWithRowNumber
WHERE PriceRank > StartRowIndex AND PriceRank <= (StartRowIndex + MaximumRows)
其中就是 priceRand>11 and PriceRand<=(11+10) ?
那查出来的结果就是12条记录到31条记录啊,那说明上边说的
对第二页来说(索引为 1), 第一行的索引为1 * 10 + 1,即 11. 这个算法不对啊?》
那应该杂算
http://msdn.microsoft.com/zh-cn/dd277470
此文章对Start Row Index 和Maximum Rows 做了解释
按它说的是Start Row Index 第二页就是11吗?那SQL里的语句不就是
WHERE PriceRank > 11AND PriceRank <= (11+ 10) 这样得出来的结果肯定不对呀
declare @perPageSize int,@StartRowIndex int,
set @perPageSize=10
set @StartRowIndex=0 ---- 页索引第一页从0开始
SELECT PriceRank, ProductName, UnitPrice
FROM
(SELECT ProductName, UnitPrice,
ROW_NUMBER() OVER(ORDER BY UnitPrice DESC) AS PriceRank
FROM Products
) AS ProductsWithRowNumber
WHERE PriceRank >= (@StartRowIndex*@perPageSize+1) AND PriceRank <= ((@StartRowIndex+1)*@perPageSize)
------------------------------
改了下SQL你试下...
谢谢您的回复,可能是我理解能力和表答能力差吧,我现在把问题再补充一下。