所以我想弄清楚我需要多少页来显示我的记录,基本上想要一个页数.
我打算做这样的事情:
SELECT COUNT(*) % 50
FROM Customers
WHERE ManufacturerID=@ManufacturerID
AND ModifiedOn > @tStamp
Run Code Online (Sandbox Code Playgroud)
因此,我希望获得99条记录的2条记录,100条记录的2条记录和101条记录的3条记录
这会有用吗?这是一种不好的做法吗?对我测试一些值似乎有点不稳定.
编辑澄清:我不想获取分页记录,只需要总页数
Cᴏʀ*_*ᴏʀʏ 15
要计算页数,只需占用页面大小上的记录数的上限:
SELECT CEILING(COUNT(*) / @PageSize) FROM ...
Run Code Online (Sandbox Code Playgroud)
以@PageSize你的情况为50.或者,由于您的应用程序可能知道每页显示所需的记录数,因此只需编写一个COUNT(*)从表中返回的查询,然后在代码中进行计算.例如:
var totalPages = Math.ceil(recordCount / pageSize);
Run Code Online (Sandbox Code Playgroud)
当你到达想要选择属于某个页面的记录时,我会这样做(以防万一你好奇):
WITH Paged AS
(
SELECT
ROW_NUMBER() OVER(ORDER BY SortColumn) AS [RowNum]
,* -- because we're going to choose which columns we need later
FROM
[MyTable]
)
SELECT
[Column1]
,[Column2]
,etc...
FROM
Paged
WHERE
[RowNum] BETWEEN (@PageNumber - 1) * @PageSize + 1 AND @PageNumber * @PageSize
ORDER BY
[SortColumn]
Run Code Online (Sandbox Code Playgroud)
你必须通过@PageNumber和@PageSize您的应用程序.