Oracle实现分页的注意点
2009-06-05 16:33
316 查看
select a.*, rownum r
from (select * from
lg_order o order by o.order_id) a
where rownum <= 20
and rownum
>= 10
这句是错误的
由于rownum是一个总是从1开始的伪列,Oracle 认为这种条件不成立,查不到记录
select a.*
from
(select *,
rownum r
from lg_order o
where rownum <=
20
) a
where a.r >= 10
对于没有排序操作的分页,这样写是对的。
select a.*
from
(select *,
rownum r
from lg_order o
where rownum <=
20
order by o.order_id
) a
where a.r >= 10
对于有排序操作的,这样写就错了,这个时候rownum 就不是你想像的了
对于sql语句 from 先执行
然后是 where
然后是select
最后是 order
在你where的时候 还没有order
这个时候rownum 是原始的rownum 不是排好顺序的rownum
所以有排序操作的应该这样写:
select *
from (select a.*, rownum r
from
(select * from lg_order o order by o.order_id) a
where rownum <=
20) b
where b.r >= 10
from (select * from
lg_order o order by o.order_id) a
where rownum <= 20
and rownum
>= 10
这句是错误的
由于rownum是一个总是从1开始的伪列,Oracle 认为这种条件不成立,查不到记录
select a.*
from
(select *,
rownum r
from lg_order o
where rownum <=
20
) a
where a.r >= 10
对于没有排序操作的分页,这样写是对的。
select a.*
from
(select *,
rownum r
from lg_order o
where rownum <=
20
order by o.order_id
) a
where a.r >= 10
对于有排序操作的,这样写就错了,这个时候rownum 就不是你想像的了
对于sql语句 from 先执行
然后是 where
然后是select
最后是 order
在你where的时候 还没有order
这个时候rownum 是原始的rownum 不是排好顺序的rownum
所以有排序操作的应该这样写:
select *
from (select a.*, rownum r
from
(select * from lg_order o order by o.order_id) a
where rownum <=
20) b
where b.r >= 10
相关文章推荐
- oracle 实现数据分页 !
- Mybatis分页实现中的几个注意点
- oracle分页语句(注意rownum的用法)
- Oracle大数据量分页显示的初步实现
- 在Oracle中实现搜索分页查询
- 1 用存储过程实现分页,除了上一页,下一页,第一页,和末页外还要有go按钮,以及go到那里的文本框。另外还要在Lable显示“当前x页,一共y页”。注意验证控件的使用和 链接存储过程的内容。
- oracle实现分页
- oracle实现分页与mysql实现分页功能
- mysql和oracle分页注意点
- oracle实现分页总结
- Oracle SQL实现分页查询
- .net+oracle 实现分页 和 菜单
- oracle12c JSON数据 使用SQL语句实现多表左外连接 显示无效数据 分页查询
- Oracle,SQl,MySql实现分页查询
- 在Oracle中实现搜索分页查询
- aspnetpager+repeater+oracle实现分页功能
- mybatis+oracle实现分页查询--非常简单实用
- 在oracle中实现搜索分页查询
- Oracle中实现分页的方法
- Oracle内使用游标实现分页