[求助]求分页的存储过程和调用方法或者中间页的算法!

泡泡鱼_ 2004-12-31 02:36:57
[求助]求分页的存储过程和调用方法或者中间页的算法!

求基于MS Sql2000的分页的存储过程和调用方法或者中间页的算法!

如分页的首页可以用select top 10 from tbname order by id asc
尾页用select top (总记录-每页显示记录数*(总页数-1)) from tbname order by id desc

请问,中间那些页的算法是怎么样?比如总记录数为2963,每页显示10条,则总页数为297

这时怎么得出第四页的记录

中间页我打算用select from tbname where id between 首ID and 尾ID order by id asc 来做SQL语句的

哪位兄弟做过吗??可以告诉我怎么解决的吗??

...全文
121 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
泡泡鱼_ 2004-12-31
  • 打赏
  • 举报
回复
通过搜索找到了我要的东西了。现在结贴
泡泡鱼_ 2004-12-31
  • 打赏
  • 举报
回复
select * from #ReturnTalbe where RecordNo >= 开始ID and RecordNo <= 结束ID
中的开始ID和结束ID要怎么才能得出正确的值呢?
泡泡鱼_ 2004-12-31
  • 打赏
  • 举报
回复
这样可以???能否说得详细点,具体点
_甲壳虫 2004-12-31
  • 打赏
  • 举报
回复
利用临时表。
如:
SELECT *, Identity(int,1,1) as RecordNo into #ReturnTable FROM tbname

然后通过
select * from #ReturnTalbe where RecordNo >= 开始ID and RecordNo <= 结束ID
得到相应页的记录
泡泡鱼_ 2004-12-31
  • 打赏
  • 举报
回复
想用一个存储过程呀。根据传过来的PageId和PageSize来判断
比如PageId=5 PageSize=20。采用升序方式显示
这时候我用的SQL语句应该为(设想):
SELECT * FROM tbname WHERE ID BETWEEN 第五页的首ID AND 第五页的尾ID ORDER BY ID ASC

例:表(Test)有150条记录,ID从1到151,其中ID=36记录已经被删除
这时时候的语句就应该是
SELECT * FROM Test WHERE ID BETWEEN 82 AND 101 ORDER BY ID ASC (正确语句)
而不能是
SELECT * FROM Test WHERE ID BETWEEN 81 AND 101 ORDER BY ID ASC (错误语句)

得出错误语句的原因无非是把已经删除了的记录ID=36也算在所有记录里面了!我要一种算法,能够得出正确的语句的!!

请各位大侠们看看!!!
posemanboy 2004-12-31
  • 打赏
  • 举报
回复
楼主好好搜索,好多的。
基本的做法大概就是:
先设置每页可以显示多少条记录
然后看你是用自定义分页还是datagrid自带的分页了
sukey00 2004-12-31
  • 打赏
  • 举报
回复
MARK

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧