Oracle 分页查询语句:
select t.* from ( select rownum rn,t.* from ( select * from t_user ) t where rownum <= M ) t where rn > N
注意:M=第X页 * 每页显示Y条数据【pageNo *pageSize】
N=(第X页 – 1) * 每页显示Y条数据【(pageNo – 1)* pageSize】
MySql 分页查询语句:
SELECT * FROM t_user LIMIT M,N
MySql优化查询语句(仅适用于order by id):
SELECT * FROM t_user WHERE id >=( SELECT id FROM t_user ORDER BY id LIMIT M,1 )LIMIT N
注意:M=(第X页-1)*每页显示Y条数据【(pageNo – 1) * pageSize】
N= 每页显示Y条数据【pageSize】
以上分页查询的算法如下:
Oracle:每页显示Y条数据,要取得第X页数据,那么先取出前 X*Y=K 条数据,在这K条数据中再取出最后 Y 条数据。
MySql:每页显示Y条数据,要取得第X页数据,那么先取出前(X-1)* Y = K 条数据,再从 K 的基础上再取出 Y 条数据。
Oracle中没有分页查询的关键字,所以用 rownum 关键字来获取查询到的记录条数,通过对记录条数的控制来得到结果集。
MySql中没有 rownum 关键字,而有LIMIT 关键字。 LIMIT m,n的意思是:先取得m 条记录,在 m 的基础上 再取 n 条记录。