分页查询 Oracle 和 mySql的不同:

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 条记录。

 

你可能感兴趣的:(分页查询 Oracle 和 mySql的不同:)