频道栏目
首页 > 资讯 > 其他综合 > 正文

三种数据库实现分页的方法讲解

18-04-17        来源:[db:作者]  
收藏   我要投稿

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*fromt_userlimit 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.。。。。

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

相关TAG标签
上一篇:Linux系统ETN挖矿病毒实例分析
下一篇:order by的两种实现方法以及与索引的介绍
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站