三种数据库实现分页

获取到的第11-15条记录

sql server: 

SELECT TOP 5 * FROM 表名 WHERE ID >
(SELECT MAX(ID) FROM(SELECT TOP 10 ID FROM 表名 ORDER BY ID) AS TEMP1) --(第10条的id)

 这个理解起来也简单,先把第十条记录的id找出来(当然这里面是直接使用MAX()进行查找,MIN()函数的用法也是类似的),然后再对比取比第十条记录的id大的前5条记录即为我们需要的结果 也就是11到15。


MySQL:

 MySQL有个专门针对查询出一段数据的语句limit,使用起来非常的方便。

 select * from t_user limit 2,3   --注意是第2条数据之后,不包含第2条数据。3代表总共查询3条记录 如果是11到15的话就是limt 10,5

Oracle:

select * from

(select rownum id ,e.* from emp e where rownum<16) e where id>10

--获取薪水从高到低排序的第5到9条记录

select * from (select rownum ro,se.* from (select * from emp order by sal desc) se)
            where ro>=5 and ro <=9;


1.首先rownum是基于结果集进行编号的。。

2.ROWNUM是一个序列,是oracle数据库从数据文件或缓冲区中读取数据的顺序。它取得第一条记录则rownum值为1,第二条为2,依次类推。如 果你用>,>=,=,between……and这些条件,因为从缓冲区或数据文件中得到的第一条记录的rownum为1,则被删除,接着取下 条,可是它的rownum还是1,又被删除,依次类推,便没有了数据。

3.列如:select se.*,rownum ro from scott.emp se where ro>5;

从emp表中,取出第一条记录,结果集中现在为空,rownum根据结果集,给它编号1,然后进行条件判断,不满足,丢掉。取出第二条记录,编号为1.。。。。

所以没有一条记录满足条件,自然查询结果为空了。。。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值