我需要使用数据库端分页,就像表中有10000条记录那么我必须首先填充100条记录,然后再记录100条记录。我正在使用SQL Server 2005请为此提供存储过程代码。数据库端分页
Q
数据库端分页
1
A
回答
2
你应该看看,因为SQL Server中的ROW_NUMBER()功能2005
它已被证明是最有效的方式(对我来说)做服务器端分页。
例子:
SELECT *
FROM (
SELECT col1, col2, col3,
ROW_NUMBER() OVER(ORDER BY col1 ASC) AS rownbr
FROM table
WHERE col2 = 'something'
) AS Query
WHERE rownbr BETWEEN 1 AND 10
ORDER BY rownbr
您可以设置要在OVER()语句,以便通过列,要在外部检索WHERE语句的第一个和最后一排。
1
如果你实际上是在尝试,你有页码页面,那么你可以做类似如下:
Create Procedure GetPagedStuff(@PageNumber int, @PageSize int)
As
;With RankedRows As
(
Select ...
, Row_Number() Over (Order By SomeColumn) As Num
, Count(NonNullColumn) Over() As TotalRows
From MyTable
)
Select ...
From RankedRows
Where Num > (@PageNumber - 1) * @PageSize
And Num <= @PageNumber * @PageSize
Return
-- example call
Exec GetPagedStuff @PageNumber = 1, @PageSize = 100
1
正如Jason和托马斯,ROW_NUMBER()函数是你最好的选择建议。但是,如果满足WHERE子句的记录数量非常高,则可能需要检索主键,然后再次使用同一个表加入子集以获取其他列。
例如:
SELECT e.col1, e.col2, e.col3
FROM Table1 e
JOIN
(SELECT ID, rownum= ROW_NUMBER()
FROM Table1
WHERE col1 = @filterParam
ORDER BY LastName)
f ON f.ID = e.ID
WHERE f.rownum BETWEEN 100 AND 150
2
DECLARE @PageSize INT,
@PageNumber INT,
@FirstRow INT,
@LastRow INT
SELECT @PageSize = 20,
@PageNumber = 1
SELECT @FirstRow = (@PageNumber - 1) * @PageSize + 1,
@LastRow = (@PageNumber - 1) * @PageSize + @PageSize ;
WITH Members AS
(
SELECT Col1,Col2,Col3,
ROW_NUMBER() OVER (ORDER BY Col1 DESC) AS RowNumber
FROM Table
)
SELECT Col1,Col2,..,..,..,
FROM Members
WHERE RowNumber BETWEEN @FirstRow AND @LastRow
ORDER BY Col1 ASC;
+2
参阅HTTP覆盖井:// www.sqlteam.com/article/server-side-paging-using-sql-server-2005 – Sutirth 2012-03-12 22:05:24
相关问题
- 1. 数据库:SQL分页?
- 2. 数据库文章:分页
- 3. 数据库分页设计
- 4. jqgrid:如何做indexeddb分页(客户端数据库)
- 5. 数据表与AngularJS客户端分页
- 6. 带后端分页的jQuery数据表
- 7. 如何在客户端为数据库中的数据显示设置分页?
- 8. 分页数据库查询困境
- 9. 用ajax(jquery)分页 - 大数据库
- 10. 分页web2py没有数据库
- 11. 分页画廊比索(无数据库)
- 12. 在SQL Server数据库上分页
- 13. 分页结果从2个数据库
- 14. 错误分页如果数据库
- 15. 实现与数据库的gridview分页
- 16. Firebase数据库分页升序
- 17. System.NotSupportedException:数据源不支持服务器端数据分页。
- 18. 数据源不支持服务器端数据分页。 gridview
- 19. 数据源不支持服务器端数据分页。
- 20. 客户端分页通过服务器端数据(Ajax)
- 21. 将Access数据库分解为后端和前端问题
- 22. 拆分Access数据库分成前部和后端
- 23. 拆分MS Access数据库 - 前端部分位置
- 24. 服务器端分页jQuery数据表与客户端分类和过滤
- 25. 角度4 - 如何分页数据库中的数据?
- 26. 分页数据划分
- 27. 分页xml数据
- 28. Django分页到分页表数据
- 29. 后端+数据库设计
- 30. 在MySQL数据库和分计算总十个分页
需要(免费)登记但在这种两部分的系列http://www.sqlservercentral.com/articles/paging/69892/ – 2011-03-20 22:56:38