史上最强的数据分页方法

转载 2005年01月03日 10:29:00

我观前辈的帖子,皆由于数据库的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关键字应该就可以就地运行了

号称史上最强!英伟达发布超级AI芯片 老黄的自动驾驶"朋友圈"达到320家!| CES 2018

▼点击上方蓝字 关注网易智能聚焦AI,读懂下一个大时代!(NVIDIA CEO黄仁勋在CES演讲)【网易智能讯 1月8日消息】在美国拉斯维加斯2018 CES展上,英伟达宣布推出的首批Xavier自主...
  • McIl9G4065Q
  • McIl9G4065Q
  • 2018年01月08日 00:00
  • 118

史上最强Java学习路线(详解)

Java是一个通用的编程语言,其实可以干很多事,怎么学Java就看怎么用了,但有一些一般的步骤: 熟悉一种文本编辑器,比如:Vim, Emacs, Notepad++, Text...
  • qq_38245537
  • qq_38245537
  • 2017年12月19日 11:44
  • 31

史上最强Spring mvc入门

最强Spring mvc入门
  • xiangzhihong8
  • xiangzhihong8
  • 2016年04月02日 22:35
  • 1428

人称史上最强大的vimrc

来源: http://amix.dk/vim/vimrc.html 史上最强大,是有点戏称成份,不过,通读这个vim配置文件,从中能学到很vim相关知识。 """"""""""""""""""...
  • mikayong
  • mikayong
  • 2016年06月06日 11:37
  • 1770

史上最全、最强SpringMVC详细示例实战教程(一)

一、SpringMVC基础入门,创建一个HelloWorld程序   1.首先,导入SpringMVC需要的jar包。   2.添加Web.xml配置文件中关于SpringMVC的...
  • qq_31308985
  • qq_31308985
  • 2016年03月14日 10:12
  • 1141

史上最全最强SpringMVC详细示例实战教程

一、SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包。 2.添加Web.xml配置文件中关于SpringMVC的配置 ...
  • u011225629
  • u011225629
  • 2015年06月22日 06:49
  • 2184

不同数据库的分页技术

针对不同的数据库,分页的实现方法是不一样的。 Oracle分页技术 Oracle数据库为我们提供了两个很重要的字段:RowId和RowNumber。RowId是一个绝对的值,是针对某一行分配的一个唯一...
  • u011921842
  • u011921842
  • 2013年12月03日 22:59
  • 799

Django高效率分页方法

转载请注明出处! 原文链接:http://blog.csdn.net/zgyulongfei/article/details/8842338 需要在博客做一个分页的功能,网上很多资料都说用Pag...
  • zgyulongfei
  • zgyulongfei
  • 2013年04月23日 23:29
  • 8695

史上最强Git教程

史上最强Git教程   1. Git(分布式仓库)。 Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git 与常用的版本控制工具 CVS, Subversio...
  • oboth_LJL
  • oboth_LJL
  • 2018年01月14日 13:09
  • 43

数据分页实现简介

数据分页在动态网站设计里是一门必须要掌握的技能,我们要将数据库里大量的数据有条理的显示在页面上,就必须要使用到数据分页,让显示到界面的数据是最有价值的数据。那么我通过下面的例子简单的介绍一下。    ...
  • why15732625998
  • why15732625998
  • 2016年06月10日 08:32
  • 1931
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:史上最强的数据分页方法
举报原因:
原因补充:

(最多只允许输入30个字)