数据库实现分页查询显示

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

你可能感兴趣的:(数据库实现分页查询显示)