当前位置:  数据库>oracle

Oracle 通过rownum实现分页

    来源: 互联网  发布时间:2017-04-03

    本文导语: //rownum是一个伪列,是Oracle系统自动为查询返回结果的每行分配的编号,第一行为1,第二行为2,以此类推。。。。   //一个oracle分页,至少要包含三层(除非不用order by,暂时可以用2层实现),模板为   select temp2.* from(     ...

//rownum是一个伪列,是Oracle系统自动为查询返回结果的每行分配的编号,第一行为1,第二行为2,以此类推。。。。  
//一个oracle分页,至少要包含三层(除非不用order by,暂时可以用2层实现),模板为  
select temp2.* from(  
       select rownum num,temp1.* from(  
              SQL query  
       ) temp1 where rownumn2  
-  
//例如:值返回查询结果第11条到20条着10条的信息的SQL如下:  
select temp2.*  
from(  
    select rownum num,temp1.*  
      from(  
        select tt.title_id,tt.name  
              from t_title tt  
        where tt.name like '%美%' 
        order by tt.sort_seqs asc,tt.title_Id desc) temp1  
    where rownum10  
//分析:  
//1.首先是一个正常的查询语句(包含order by)  
select tt.title_id,tt.name  
from t_title tt  
where tt.name like '%美%' 
order by tt.sort_seqs asc,tt.title_Id desc  
//这个和正常的SQL语句没有任何的区别  
--  
//2.添加rownum字段,显示列数(注意:rownum一定是先n2)  
select rownum num,temp1.*  
from(  
    select tt.title_id,tt.name  
    from t_title tt  
    where tt.name like '%美%' 
    order by tt.sort_seqs asc,tt.title_Id desc) temp1  
where rownum2;  
select rownum,id,name from student where rownum2,这时候查找第一条发现它的rownum=1,不满足条件,于是抛弃掉,  
//把第二条语句的rownum赋值为1,再判断第二条记录是否满足条件,同样不满足。。。。  
//于是发生了死循环一样的判断,最终返回空;  
//有人这时候就奇怪啦,为什么第一条记录rownum=1不满足条件时候,第二条记录rownum=2,却要重新设值为1呢?  
//非常简单,你直接在where后添加了条件rownum>2,它是个条件啦,  
//第一条记录不满足条件,叫抛弃掉啦,这时候结果集是空的,当然会一直rownum=1的赋值;  
//解决办法:先查询,并为每条记录分配rownum,然后嵌套查询  
select t.* from (select rownum num,id,name from student) t where t.num>2  
//第二条语句可以正常的执行,根据上面的解释,这个可以理解了吧!  
--  
//2.rownum与order by同时存在的问题  
//当 where 后面有rownum的判断,并且存在order by时候,rownum的优先级高!  
//oracle会先执行rownum的判断,然后从结果中order by,很明显是错误的结果啦!  
//就好像学校要取成绩最好的前10名同学,结果这种方法一执行,成了取出10名同学,然后按照成绩的高低排序!  
//这点与SQL Server的TOP完全不同,TOP遇上order by,是先执行order by,在分页的;  
//解决办法就是先执行order by,然后嵌套执行rownum  
//说白啦就是用()改变函数的优先级! 































































    
 
 

您可能感兴趣的文章:

  • 哪位大哥奉献一段调试通过的oracle中存取图片的例子oracle8.1.7,resin-2.1.6
  • 怎么直接通过JDBC连接oracle?
  • windows通过TCP/IP怎么连接到solaris上的oracle?
  • 急。。。在servlet如何连接到oracle(不通过odbc)
  • linux下通过对文件读取方式查询oracle的版本信息
  • linux能够通过执行脚本添加oracle数据库的用户吗
  • 如何在UNIX上通过ODBC操纵Oracle等DBMS???
  • Window客户端通过ADO是否能够连接和操作Unix平台下的Oracle数据库?
  • 可否直接通过JDBC 连上Oracle(我并没有装oracle)
  • 通过win2000在linux上安装oracle,需要一个什么工具?在哪有下?
  • windows下通过ie访问不到linux环境下的oracle em
  • Linux/UNIX下,C++程序通过那些步骤访问Oracle或者Sybase SQL数据库?
  • 通过Oracle发送Email的实现方法
  • unix通过crontab 定时启动oracle应用程序??????????
  • 通过进程id号知道一个Oracle会话所占用的内存
  • oracle通过行范围查询取4至10行
  • apache通过php的oci函数读取Oracle(字符集ZHS16GBK)时,显示乱码,如何解决?
  • 通过一晚上.在2000上装了REDHAT9.再装ORACLE9I
  • 我准备装linux 7.3,大家能给点意见吗,我1GB的内存,那么交换区设多大? oracle9i能在7.3上通过吗?
  • 通过libsqlora8-2.2.10--c语言程序连接oracle数据库,需要连接,查询,修改等,急!!!
  • 不想装oracle却还要在redhat8.0下用jdbc连接oracle如何实现?
  • 那位高手知道怎样实现用JSP跟ORACLE连上?
  • oracle定时备份压缩的实现步骤
  • oracle增加表空间大小两种实现方法
  • MySQL实现类似Oracle中的decode()函数的功能
  • 请问在 Linux 下如何用代码实现连接oracle数据库 并 执行 SQL 语句?
  • 老大们,虚拟机上系统os是linux,我想在它安装oracle,怎么实现?
  • 用oracle pl/sql 从A unix机器,去读取B unix机器上的一个文件,怎么实现?
  • linux上安装oracle 数据库后,是否能写shell程序实现数据库的自动启动。
  • 如何实现将客户机上的word文件,以B/S方式最终存入oracle数据库?
  • oracle列合并的实现方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle中查询rownum和rowid的区别
  • 随机获取oracle数据库中的任意一行数据(rownum)示例介绍
  • Oracle查询语句中rownum与rowid的不同之处分析
  • oracle的rownum深入解析
  • Oracle中使用Rownum分页详细例子
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE日期相关操作
  • Linux系统下Oracle的启动与Oracle监听的启动
  • ORACLE数据库常用字段数据类型介绍
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • Oracle 12c的九大最新技术特性介绍
  • 网间Oracle的连接,远程连接Oracle服务器??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3