关于oracle,有高手帮帮忙么?

来源:百度知道 编辑:UC知道 时间:2024/05/28 19:24:37
因为在学习如何分页,所以我想查询book表中从第几条到第几条的数据用于分页
select* from book where rownum between 1 and 11
可以查询1到11的,但为什么
select* from book where rownum between 2 and 11
却没有数据呢?
难道用rownum实现不了?
oracle有没有可以像mysql里的 desc limit这样的分页用的??
高手帮帮忙

楼上的不对的!注意使用别名!!
看图说话

SQL> select *
2 from
3 (select rownum,t1.* from t1 order by id1)
4 where rownum between 2 and 11 ;

未选定行

SQL> select *
2 from
3 (select rownum abc,t1.* from t1 order by id1)
4 where abc between 2 and 11 ;

ABC ID1 ID2 ID3
---------- ------- --------- -----
2 a12it1 ababcdad a^^a
5 ba12it abcd1ad a^&^
3 ba12it1 ababcd1ad a^&^a
6 it1 it1 it1
4 it1 ababcd a^^

最好在FROM子查询里面加上排序语句啊,要不分页意义不大,还不如直接用ROWID。

SQL>

select *
from
(select rownum rn, book.* from book)
where rn between 2 and 11

因为rownum 只能从数字1开始,中间也不能有间隔,有2中方法
select * from (select rownum as rn,book.* from book) x where x.rn between 2 and 11

select * from (select row_number()over(order by book的某个字段) as rn,book.* from book) x where x.rn between 2 and 11