ASP学习:史上最强的数据分页方法
我观前辈的帖子,皆由于数据库的sql大不一致,且sql server,access等菜鸟级数据库没有如rowid,_n_,obs等之类的辅助列,空有between运算符而无用武之地,
又无如except之类的数据集运算符,真是令无数英雄尽折腰
偶详观各数据库sql,得出是数据库就有取前面n条记录的sql语法,如什么select top n*****之类的语法,而数据分页的关键问题是取后n条记录的语法偶深思良久,最后小悟,故出此言,还忘前辈们多多指点
取记录集后n条记录的大法:
假设:
1.有一sql语句将产生1000条记录 (select 唯一id,其他字段 from 表集 where 条件 order by 排序)
2.每页显示20条记录
3.当前显示第5页
实现如下:
select * from
(
select * from (select top 20*4 唯一id,其他字段 from 表集 where 条件 order by 排序) as a
union all
select * from (select top 20*5 唯一id,其他字段 from 表集 where 条件 order by 排序) as b
)
a
group by 唯一id,其他字段 having count(唯一id)=1 order by 排序
运行此sql,至此取记录集后n条记录大法就些完毕
详细说明:
此sql语句的关键应用技巧在于union all和分组上的条件过滤语句
大家可以根据此技巧完全可以做出一个通用的分页方法,如直接由用户传入sqlstr(sql语句),numperpage(每页显示数),currpage(当前页),自己在再函数内组织成通成的sql分页语句
备注:
当前页为1的话就不需要运行该sql了,直接top一下就ok了
由于没有环境,该sql性能无法测试,但相信不会低效
运行平台在access,sqlserver上都可运行,其它数据库平台只需改top关键字应该就可以就地运行了
()
- · 新手上路:初学Java注意什么
- · 开发实例:JSP中实现全文检索
- · J2SE 1.5版本的新特性一览
- · ASP编写完整的IP所在地搜索类
- · 一些ASP初学者常用的代码
- · 在 Access 中使用“存储过程”(一)
- · 消除.NET极度狂热下的四个误解
- · Form域中用Post提交容量大的数据
- · 构建一个弹出式图象按钮
- · Web设计中如何使用XML数据
- · 如何利用ASP把图片上传到数据库
- · ASP中常用的文件处理函数
- · 优化NFR之一 --MSSQL Hello Buffer Overflow
- · SQL injection的实现与应用
- · 用ASP编程实现快速查找
- · 面向对象的应用服务层设计
- · UNIX下的PHP环境配置,+apache
- · 改进Web站点性能的五个方面
- · JSP在win2000下的安装
- · 80004005 及其它错误消息的疑难解答
- · 如何在Form域中Post大于100K字节的数据
- · ASP可以动态Include文件吗
- · 使用ASP编程常见问题解答
- · VB.NET的数据库基础编程(2)
- · VB.NET的数据库基础编程(1)
- · 用VB.NET来做个性化浏览器
- · Visual C#的SQL Server编程
- · 运用C#制作屏幕捕捉程序
- · Microsoft的.NET 策略
- · ASP+配置概念
- · ASP.NET强大的性能
- · .Net边学边讲
- · Microsoft.NET为什么难于理解
- · ASP.NET 定制控件的开发(二)
- · ASP.NET 定制控件的开发(一)
- · 用Zend Encode编写开发PHP程序
- · SQL进阶
- · 如何用sql语句修改数据表中字段,实现identity(100,1)的递增
