ITPub博客

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

各大数据库分页语句整理

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

一、分页语句

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

sql server方案1

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

sql server方案2

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

 

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

 

oracle方案:select from (select rownum r,* from 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 byrownum不按顺序输出了,这说明rownum是排序前的编号。如果对order by从句中的字段建立了索引,那么,rownum也是按顺序输出的,因为这时候生成原始的查询结果集时会参照索引表的顺序来构建。

 

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

<!-- 正文结束 -->

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

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

注册时间:2009-08-10