Oracle之分页

作者: 产品小正 | 来源:发表于2017-10-30 20:53 被阅读0次

在Oracle中有一个方法rownum用来查询第一行到第n行的内容,但没有一个合适的方法若查询第x行到第y行的内容,而在实际应用中却经常需要查询第x行到第y行的内容,这时我们就需要使用rownum和子表查询等内容来进行查询,因为这一块内容属于Oracle总的常用部分所以专门在此介绍。

rownum

在Oralce中有一个伪列rownum,其在创建表的时候就存在了却不显示,若要使用这个列可以直接调用即可,也可以对这个列添加别名来调用。

rownum只能用于显示小于某行的数据即第一行开始到你要查询到的那一行为止的数据。

rownum对于小于某值的查询条件

select * from emp where rownum<=3; 查询emp前三行记录

rownum对于等于某个值得查询条件

select * from emp where rownum=1; 显示第一行记录

分页

在Oracle把查询第几行到第几行的操作称为分页,其具体操作是通过子查询等操作完成。

select 列名 from (select 表名.*,rownum rn from 表名)表名  where rn操作;

思考如下:

1.选择所有内容

select * from emp;

2.显示rownum

select e.*,rownum rn from(select * from emp)e;

这一步可以精简为下面形式,但某些情况只能用上面那种

select emp.*,rownum rn from emp;

3.查询

select * from(select e.*,rownum rn from (select * from emp)e);

4.其他变化

select * from (select emp.*,rownum rn from emp)emp where rn=3;

查询第三行的信息

select * from(select e.*,rownum rn from (select * from emp)e where rownum<=10) where rn>2;

查询第三到第十行信息。上面的也可以精简为

select * from(select emp.*,rownum rn from emp) where rn>2 and rn<=10;

在某些时候我们需要先对表的内容进行排序,随后查询第x行到第y行的内容,这个时候有一个需要注意的点是rownum是在表产生的时候产生的伪列,所以使用排序会连着rownum的值进行排序,从而达不到想要的效果。

select rownum,sal from emp order by sal;

为了解决上述这个问题,我们需要使用子表查询即先排好序,再在新表之中显示rownum来规避这个问题。

select rownum,sal.* from (select sal from emp order by sal)sal;

考虑到排序的问题,所以在上方第二步的时候使用第一种方法即select e.*,rownum rn from(select * from emp)e;,在内表select * from emp中进行排序可以完成在乱序中找到第x行到第y行的效果。

select * from(select e.*,rownum rn from(select * from emp order by sal)e)where rn>=3 and rn<=8;

输出emp表薪资排名3到8的员工信息。

相关文章

  • 数据库分页查询

    今天在这里给大家分享一下oracle和mysql的两种分页查询。 oracle的分页 oracle的分页需要用到R...

  • 数据库分页查询

    sqlserver分页查询语句 mysql分页 oracle分页查询语句 EF Lambda Skip跳过多少条...

  • Oracle ROWNUM用法和分页查询总结

    Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用。 Oracle分页查询格式(一):http://...

  • 数据库操作(八)

    1、分页查询Oracle分页关键字:rownumMySql的分页关键字:limit 1)、rownum:伪列该列在...

  • Oracle 分页

    一、 ROWNUM 一般情况下使用这种查询, 但是数据量增大以后,比如共10000页 想看第9999页 这种情况 ...

  • oracle分页

    对比结果:

  • Oracle分页

    Oracle分页 (1)>= y,<= x表示从第y行(起始行)~x行(结束行) 。 (2)rownum只能比较小...

  • Oracle SQL优化学习

    Oracle SQL优化进阶学习 引言 对于下面的Oracle分页如何优化该段语句: SELECT * FROM ...

  • Java知识点总结数据库篇6-10

    六、Oracle分页 select * from (select * from (select s.*,rownu...

  • oracle分页 mysql分页写法

    1 oracle 分页 SELECT*FROM ( SELECTA.*, ROWNUM RN FROM(SELEC...

网友评论

    本文标题:Oracle之分页

    本文链接:https://www.haomeiwen.com/subject/hhnppxtx.html