SQL Server 分页解决方案

本文介绍了两种SQL分页方法:一种是使用NotIn和SELECT TOP,另一种是应用SQL Server 2005新增的ROW_NUMBER()函数。通过实例展示了如何实现不同页面的数据加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分页方案一:(利用Not In和SELECT TOP分页)

 例子:

每页显示10条记录,显示第一页记录:

 

SELECT TOP 10 * FROM Production.Product WHERE
(ProductID 
not in (SELECT TOP 0 ProductID FROM Production.Product ORDER BY ProductID))
ORDER BY ProductID

结果如下:

 

 

 

每页显示10条记录,显示第二页记录:

SELECT TOP 10 * FROM Production.Product WHERE 
(ProductID 
not in (SELECT TOP 10 ProductID FROM Production.Product ORDER BY ProductID))
ORDER BY ProductID

结果如下:

 

 可以总结为:

SELECT TOP 页大小 * FROM Table WHERE 
(ID 
NOT IN (SELECT TOP 页大小*(页数-1) ID FROM Table ORDER BY ID))
ORDER BY ID


 

分页方案二:(利用SQL Server 2005新增的 ROW_NUMBER()分页)

 例子:

每页显示10条记录,显示第一页记录:

WITH Products AS
(
SELECT 
ROW_NUMBER() 
OVER (order by ProductID) as RowNumber,*
FROM  Production.Product )
SELECT *
FROM Products
WHERE RowNumber between 1 and 10


结果如下:

 

 

每页显示10条记录,显示第二页记录:

 

WITH Products AS
(
SELECT 
ROW_NUMBER() 
OVER (order by ProductID) as RowNumber,*
FROM  Production.Product )
SELECT *
FROM Products
WHERE RowNumber between 11 and 20


结果如下:

 

可以总结为:

 

WITH Products AS
(
SELECT 
ROW_NUMBER() 
OVER (order by ProductID) as RowNumber,*
FROM  Production.Product )
SELECT *
FROM Products
WHERE RowNumber between 页大小*(页数-1)+1 and 页大小*页数; 


转载于:https://www.cnblogs.com/hb_cattle/archive/2010/12/14/1905280.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值