Oracle分页查询(面试考点)

Oracle 有一个关键字:rownum,它相当于系统给分配的一列。

  • rowid与rownum虽都被称为伪列,但它们的存在方式是不一样的;
  • rowid是物理存在的,表示记录在表空间中的唯一位置ID,在DB中是唯一的。只要记录没被搬动过,rowid是不变的;
  • rowid相对于表来说又像表中的一般列,所以,以rowid为条件就不会有rownum那么莫名其妙的结果出现;
  • rownum是真正的伪列,不管是数据库中物理表,还是嵌套子查询都会有rownum这个伪列,rownum总是从1开始的,第一条不满足去掉的话,第二条的rownum又成了1;
  • 另外还要注意:rownum不能以任何基表的名称作为前缀。

那么,如何使用oracle分页,查询第6条到第10条数据呢,我们直接写两个例子:

  1. select * from (select e.*,rownum m from emp e where rownum <= 10)where m >= 6;
  2. select * from (select e.*,rownum m from emp e )em where em.m <= 10 and em.m >= 6;

运行结果如下:

Oracle分页查询(面试考点)

可以看淡,第二种方法更高效一些,所以推荐第二种写法。

 

更多精彩,请关注我的"今日头条号":Java云笔记
随时随地,让你拥有最新,最便捷的掌上云服务