所以我想弄清楚需要多少頁來顯示我的記錄,基本上需要頁數。計算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