MySQL和Oracle分页的区别

时间:2021-10-30 14:53:07

一、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