各大数据库的分页查询

分页这个功能,可以说在开发中经常会用到,今天刚学习完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






  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值