ITPub博客

首页 > 数据库 > Oracle > 各大数据库分页语句整理

各大数据库分页语句整理

Oracle 作者:谢岗 时间:2013-12-13 14:10:20 0 删除 编辑

一、分页语句

取出sql表中第31到40的记录(以自动增长ID为主键)

sql server方案1:

    selecttop 10 * from t where id not in (select top 30 id from t order by id ) orde byid

sql server方案2:

    selecttop 10 * from t where id in (select top 40 id from t order by id) order by iddesc

 

mysql方案:select * from t order by idlimit 30,10

 

oracle方案:select * from (select rownum r,* from t where r<=40) wherer>30

 

--------------------待整理进去的内容-------------------------------------

pageSize=20;

pageNo = 5;

 

1.分页技术1(直接利用sql语句进行分页,效率最高和最推荐的)

 

mysql:sql = "select * from articles limit " +(pageNo-1)*pageSize + "," + pageSize;

oracle: sql = "select * from " +

"(selectrownum r,* from " +

"(select* from articles order by postime desc)" +

"whererownum<= " + pageNo*pageSize +") tmp " +

"wherer>" + (pageNo-1)*pageSize;

注释:第7行保证rownum的顺序是确定的,因为oracle的索引会造成rownum返回不同的值

简洋提示:没有order by时,rownum按顺序输出,一旦有了order by,rownum不按顺序输出了,这说明rownum是排序前的编号。如果对order by从句中的字段建立了索引,那么,rownum也是按顺序输出的,因为这时候生成原始的查询结果集时会参照索引表的顺序来构建。

 

sqlserver:sql = "select top 10 * from id not id(select top" + (pageNo-1)*pageSize + "id from articles)"

<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22315237/viewspace-1116261/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-08-10