主页 > 知识库 > 数据库 > Oracle >

探究Oracle分页查询(2)

来源:中国IT实验室 作者:佚名 发表于:2012-08-27 09:58  点击:
1 通过between and查询第二页用户信息。 如果按照一般的思维,我们会通过写一下的语句来查询第3,4行的记录。 但是执行发现提示错误:未选定行。原因是在此查询语句中rownum是虚拟的,不是实际存在的。这里需要注意

  1 通过between and查询第二页用户信息。
   
    如果按照一般的思维,我们会通过写一下的语句来查询第3,4行的记录。
计算机生成了可选文字: SQL>soloctro目num,usor_id,usor_nam。,pass"ordfromt_user"herero"numbot“。。n3己nd峪;未选定行.
    但是执行发现提示错误:未选定行。原因是在此查询语句中rownum是虚拟的,不是实际存在的。这里需要注意一下。但是我们可以通过以下的方式来实现:
计算机生成了可选文字: SOL>SeleCternbet目eenxfrom(selectro"numrn,user_id,user_name,Pass"ordfromt_user)"he3己nd拜;PNUSERIDUSERN自HEP自55址OPDCCCCbbbbCCCCbbbbCCCCCCCbbbbbb3勺
    此时的rownum已经为临时表中的实际数据,所以可以直接拿来用。这样便实现了我们所预期的效果。
   
    2 通过三层结构子查询。
   
    查询第二页用户信息。
计算机生成了可选文字: SQL>soloct.from(soloctro目nUmro目num<:勺)tomp目horotomp.rnRNUSERIDUSERN自HErn,usor_id,usor_name,pass目ordfromt_usor目hor。>2;p自55目ORDCCCCbbbbCCCCbbbbCCCCCCCbbbbbb3月
    通过上面的执行过程我们需要已知两点信息:
   
    1当前所在页:currentPage:2.
   
    2每页所显示的长度lineSize:2.
 
计算机生成了可选文字: SQL>soloct.from(soloctro目nUmro目num<:6)tomp目horotomp.rnrn,usor_id,usor_nam。,pass目ordfromt_usor目hor。>勺;RNUSERIDUSERN自HEp自55目ORD5jnqqjnqq1sjnqq1s
    整个查询过程分两步进行:
   
    1先查询出1-4条记录:
   
    select rownumrn,user_id,user_name,password from t_user where rownum<=4;
   
    2再查出第2-4条记录:
   
    select * from(
   
    select rownumrn,user_id,user_name,password from t_user where rownum<=4) temp
   
    where temp.rn >2;
   
    当然以上两点可以根据用户的需求进行设定,我们也就可以在将具体的数据用变量替代。
   
    查询第三页用户信息。

有帮助
(0)
0%
没帮助
(0)
0%