您的位置:首页 > 数据库 > Oracle

分页查询 Oracle 和 mySql的不同:

2011-08-11 21:32 459 查看
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 条记录。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: