数据库实现分页查询显示

来源:互联网 发布:市场营销教学软件 编辑:程序博客网 时间:2024/05/22 02:21
现在一般用的比较多的数据库,应该是Oracle,MSSQL(Tsql),mysql,但是他们并没有统一的标准来实现分页查询,也就是没有统一的SQL标准,所以他们三个方法各不同给编码人员造成了很大的不便。先总结一下,与大家共享!
Mysql 是最简单的,就是使用Limit进行查询。例如:select * from tmp_table limit10,20;也就是从tmp_table表中查找(10,20)之间的元组。
Oracle 也基本上实现了这种方法,但是形式却有所不同。例如:select * from tmp_table whererownum>=10 andrownum<=20;也就是从tmp_table表中查找(10,20)之间的元组。
MSSQL(TSQL)只有TOP,也就是取出一个表中的头部的N条元组,但是没有直接可以取出N到M之间的数据的方法,所以这里要自己开发。例如上面是实现了每页10个数据,然后取出(10,20)之间的数据(也就是第二页),MSSQL这么实现:
select * from 
     selecttop 10 * from
    
        select top 20 * from tmp_tableorder by id
     )order by id DESC
)order by id ASC;
其实这里原理应该是比较简单的,因为我们要取出(10,20)之间的元组,先取出前20条,然后降序取出前10条,然后升序取出全部的,也就实现了升序取出(10,20)元组了。
显然,这也是因为SQL的标准并不是很严格的缘故吧,所以很多的数据库的实现方式都不同,但是经过我们对SQL标准的学习,我们应该是可以总结出相同的方法的。