My Life My Dream!

守信 求实 好学 力行
随笔 - 193, 文章 - 0, 评论 - 55, 阅读 - 34万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

sql2005分页查询(一)

Posted on   召冠  阅读(465)  评论(0编辑  收藏  举报


分页查询的原理:
1.先将预分页内容的码按照排序条件加上自增列导入到临时表中(或表变量)
2.针对临时表操作,找到相应的码列表
3.根据码列表,重新找相应原分页内容
 
需要注意的是:
第一是添加自增列,确定行号
第二缩减中间处理过程的操作数据量 
 

CREATE PROC UP_tFunction_GetListByPage
(
@PageIndex INT,
@PageSize INT
)
AS

 
SELECT OID,
   vName,
   vLabel,
   vRemark
 
FROM tFunction
 
WHERE OID in ( 
     
SELECT OID
     
FROM 
      (
      
SELECT ROW_NUMBER() OVER(ORDER BY OID DESCAS RowID, OID
      
FROM tFunction
      ) 
AS t
     
WHERE RowID between (@PageIndex-1)*@PageSize and @PageIndex*@PageSize
    )
 
ORDER BY OID DESC

GO

-- UP_tFunction_GetListByPage 2, 10


CREATE PROC UP_tFunction_GetListByPage2
(
@PageIndex INT,
@PageSize INT
)
AS
 
WITH abc
 
AS
 (
  
SELECT ROW_NUMBER() OVER(ORDER BY OID DESCAS RowID, OID
  
FROM tFunction
 )

 
SELECT *
 
FROM tFunction
 
WHERE OID in (
      
SELECT OID
      
FROM abc
      
WHERE RowID between (@PageIndex-1)*@PageSize and @PageIndex*@PageSize
     )
GO      


-- UP_tFunction_GetListByPage2 1, 10

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示