MySQL和Oracle分页的区别
一、MySQL使用limit分页
select * from table_name limit m, n; // m = (startPage-1)*pageSize, n = pageSize
注:m是MySQL中数据行的起始下标,它从0开始
二、Oracle使用rownum分页
select * from (
select rownum rn, a.* from (
select * from table_name order by XXX
) a
where ruwnum <= y // 结束行,y = startPage*pageSize
)
where rn > x; // 起始行,x = (startPage-1)*pageSize
注:rownum只能比较小于,不能比较大于,因为rownum是先查询后排序的,例如你的条件为rownum>1,当查询到第一条数据,rownum为1,则不符合条件。第2、3...类似,一直不符合条件,所以一直没有返回结果。所以查询的时候需要设置别名,然后查询完成之后再通过调用别名进行大于的判断。
或者也可以直接写成
select * from ( select rownum rn, a.* from ( select * from table_name order by XXX ) a ) where rn > x and rn <= y; // x = (startPage-1)*pageSize, y = startPage*pageSize