Oracle分页

Oracle数据库跟Mysql在语法上有很多差异。

Mysql表名重命名可以使用as
select * from (select * from haha) as new_haha;
Oracle带着as会出错

Mysql可以使用limit from,sz实现分页
Oracle实现分页就很麻烦,有以下三种形式,但是它们的本质都是一样的,即:通过rownum。
rownum是一个变量,从1开始递增。你不可能不要010,而直接获取1020。

Mysql的select字段可以不是group字段,Oracle的select字段必须是group字段中的一个。

--分页查询一
select * from (select a1.*,rownum rn from (select * from student) a1 where rownum <=5) where rn>=2;

--分页查询二
select a1.* from (select student.*,rownum rn from student where rownum <=5) a1 where rn >=3;

--分页查询三
select a1.* from (select student.*,rownum rn from student) a1 where rn between 3 and 5;

需要注意的是,必须要给rownum起一个别名,否则rownum会被oracle进行优化到里面去,导致获得空列表。

原文地址:https://www.cnblogs.com/weiyinfu/p/7492628.html