所以我想弄清楚我需要多少页来显示我的记录,基本上想要一个页数。
我打算做这样的事情:
SELECT COUNT(*) % 50
FROM Customers
WHERE ManufacturerID=@ManufacturerID
AND ModifiedOn > @tStamp
因此,对于该声明,我希望为 99 条记录取回 2,对于 100 条记录取回 2,对于 101 条记录取回 3
这会奏效吗?这是一种不好的做法吗?我测试一些值似乎有点不稳定。
编辑澄清:
我不想得到分页记录,只想得到总页数
最佳答案
要计算页数,只需取超过页大小的记录数的上限:
SELECT CEILING(COUNT(*) / @PageSize) FROM ...
与
@PageSize
在你的情况下是 50。或者,由于您的应用程序可能知道每页显示的所需记录数,只需编写一个返回 COUNT(*)
的查询即可。从您的表中,并在您的代码中进行计算。例如:var totalPages = Math.ceil(recordCount / pageSize);
当您要选择属于页面的记录时,我会这样做(以防万一您好奇):
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]
您必须传入
@PageNumber
和 @PageSize
从您的应用程序。
关于sql - 计算select语句中的记录页数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7182325/