各大数据库的分页查询

来源:互联网 发布:姚明nba生涯数据统计 编辑:程序博客网 时间:2024/06/05 11:14

分页这个功能,可以说在开发中经常会用到,今天刚学习完oracle的分页,所以总结一下学过的各个数据库的分页

为了讲述方便,以下分页都是查询出员工表emp中的第5条到第8条记录


--------------------------------------------------------------------------------

1.MySQL中的分页实现

  MySQL的分页可谓是简单粗暴,一个limit 就能解决

select * from emp order by sal limit 4,3

注:limit(m,n)从第m条开始起的n条记录,m从0开始,所以上面是4,3

-----------------------------------------------------------------------------------


2. SqlServer 中的分页实现


  我不知道这个有没有具体的分页函数,记得当时做课设的时候,因为没有limit,所以就用了两个top来凑,具体sql语句如下:

select top 8 * from emp order by sal where eno not in(select top 4 eno from emp order by sal);

先查出top8的集合,再消掉top4的集合中的,就是5到8了

---------------------------------------------------------------------
 

3.oracle中的分页实现

  oracle中的就有点蛋疼,因为oracle中虽然有一个rownum,但是这个rownum不随排序的改变而改变,也就是说原来行号为5的记录的工资最高,但是order by之后,他的行号还是5。所以我们只能采用一点小技巧,把它select到一个新表

select * from (select rownum r,e1.* from (select * from emp order by sal) e1  where rownum <=5+3) where r >=5;
注意:因为oracle本身的rownum的设计是一行一行取值的,所以where中的rownum只能<=,不能>。如果要>,要给rownum起个引用别名r






原创粉丝点击