使用rownum分页查询
select * from (select t.*,rownum rn from (select b.name,b.age from tb_user b)t where rownum <=pageIndex * pageSize)where rn>(pageIndex -1)* pageSize
注意:pageIndex是分页查询下标,pageSize是分页查询大小。如查询第一页,每页大小为500的sql为
select * from (select t.*,rownum rn from (select b.name,b.age from tb_user b)t where rownum <=1 * 500)where rn>(1 -1)* 500
问题:oracle分页查询可能会导致数据重复
解决:可以用主键或者唯一索引排序,如果没有唯一索引,可以使用rowid进行排序
关于rowid,点击了解
oracle的rowid
如上sql可以写为
select * from (select t.*,rownum rn from (select b.name,b.age from tb_user b order by b.rowid asc)t where rownum <=1 * 500)where rn>(1 -1)* 500