所以我想弄清楚需要多少页来显示我的记录,基本上需要页数。计算select语句中的记录页数
我会做这样的事情:
SELECT COUNT(*) % 50
FROM Customers
WHERE [email protected]
AND ModifiedOn > @tStamp
SO的发言我想拿回2 99条记录,2 100和3 101
请问这个工作?这是一种不好的做法吗?在我测试一些价值观时,似乎有点不自然。
编辑澄清: 我不想让分页记录,只是
所以我想弄清楚需要多少页来显示我的记录,基本上需要页数。计算select语句中的记录页数
我会做这样的事情:
SELECT COUNT(*) % 50
FROM Customers
WHERE [email protected]
AND ModifiedOn > @tStamp
SO的发言我想拿回2 99条记录,2 100和3 101
请问这个工作?这是一种不好的做法吗?在我测试一些价值观时,似乎有点不自然。
编辑澄清: 我不想让分页记录,只是
要计算的页数的总页数,只取的记录数的上限在页面大小:
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
。
如果您在分页SELECT语句中使用
ROW_NUMBER() OVER ({ORDER statement}) AS ROWNUMBER
,可以再加入
COUNT(*) OVER() AS TOTALCOUNT
获得由查询
我想找到的总记录数,获取总页数的基本问题仍未得到解决。
通过使用一个简单的逻辑,我认为它可以在SQL查询来实现:
TotalPages = (Count(*) OVER() + @NumberOfItems - 1)/@NumberOfItems
其中“@NumberOfItems”是要显示在页面内的项目数量。希望这可以帮助某人。
在这里,我想给总101页808个细胞like--
SL-------page
01 01
02 01
03 01
04 01
05 01
06 01
07 01
08 01
09 02
10 02
11 02
12 02
13 02
14 02
15 02
16 02
-----------
808 101
代码-----
WITH Paged AS
(
SELECT
ROW_NUMBER() OVER(ORDER BY SL) AS [RowNum]
,*
FROM
DATA
WHERE
CODE=12
)
SELECT
ID
,SL
,Book
,Page
FROM
Paged
WHERE
[RowNum] BETWEEN (1 - 1) * 8 + 1 AND 1 * 8
ORDER BY
SL
如果你想返回从SP的总页数确保在SQL Server分为整数时将'@ PageSize'强制转换为'FLOAT'。即'CEILING(RecordCount/CAST(@PageSize AS FLOAT))AS [TotalPages]' – pechar