MySQL和Oracle的分页查询

MySQL使用limit进行分页

select * from stu limit m,n; // m=(pageIndex-1)*pageSize,n=pageSize

(1)第一个参数m表示起始行,第二个参数表示取多少行;
(2)pageIndex表示页索引,即查询第几页的数据(从1开始),pageSize表示页大小,即一页最多显示多少行记录;
(3)m= (2-1)*10+1=11,n=10limit 11,10,表示从第11行开始取记录行(包含第11行),共取10行,也表示查询第2页的数据,这一页最多显示10行记录。

Oracle使用rownum进行分页

select * from(
  select rownum rn,a.* from table_name a where rownum <= x // 结束行,x=pageIndex*pageSize
)
where rn >= y; // 起始行,y=(pageIndex-1)*pageSize+1

(1)>= y,<= x表示从第y行(起始行)~x行(结束行) 。
(2)rownum只能比较小于,不能比较大于,因为rownum是先查询后排序的,例如你的条件为rownum>1,当查询到第一条数据,rownum为1,则不符合条件。第2、3…类似,一直不符合条件,所以一直没有返回结果。所以查询的时候需要设置别名,然后查询完成之后再通过调用别名进行大于的判断。

你可能感兴趣的:(Database,MySQL,Oracle,分页查询)