备忘录
select *
from (select rownum as rn, t.*
from (select l.*
from table_a l
order by l.creation_date desc) t
where rownum < 15) h
where rn > 5
说明
- 最里层查询可以按条件排序,倒序或顺序;
- 第二层主要查询rownum以及rowmun<15来限制一页内容的上限,即5-15条中的15;
- 最外层通过rn>5来限制下限,这样做的目的在于rownum只支持<=,意味着你不能 rownum>=5这样来查询,因为rownum作为伪列,它是动态的,并不是静态或固定的。当存在rowmun>=5的条件时,oracle数据库从第一行开始检索,发现不符合>=5的条件,则把第一行排除,从下一行开始继续比较,但此时下一行的rownum又是从1开始,因为rownum=1总是符合查询条件数据的第一行,周而复始,没有一行数据符合rownum>=5的条件。