zoukankan      html  css  js  c++  java
  • 用rownum先排序后分页

      今天突然想到rownum可以解决分页问题,于是做了各种实验,找个几个文章,最后有了一定成果。

      现有表tablename,含有字段showorder,要求提取showorder的第11行到20行数据。

      用语句select rownum r,a.* from tablename a order by showorder进行查询的时候会发现结果集中rownum是在排序之前赋的值,因此如果需要按showorder提前的话应该先将tablename按showorder排序,将排序后的结果集按rownum提取。

      用语句SELECT ROWNUM r, a.* FROM (select * from tablename order by showorder) a WHERE ROWNUM <= 20 可以查出前20条,但如果过滤条件变成rownum<=20 and rownum >=10,就会发现结果集一条数据都没有,因为rownum是提取数据,将数据操作完成之后再进行标记行号,关于这点,有个作者写的很好http://blog.csdn.net/greenappple/article/details/6872660,大家可以看看。

      剩下的操作是将标记好行号的前20条数据提取后十条。

      SELECT *  FROM (SELECT ROWNUM r, a.* FROM (select * from tablename order by showorder) a WHERE ROWNUM <= 20 )  WHERE r >= 11;

      上面的语句用plsql执行时用了0.078秒,等同于plsql查询上千行的表时只查处了前十条的时间。

      网上有很多好文章写着块的,此处只记载了适用于我的方面。

  • 相关阅读:
    .net开发环境的选择
    html头部的一些信息
    SQLHelper类
    C#实现文件下载
    js类
    Winform小知识点
    emacs 代码缩进
    自己喜欢的shell终端配置
    time_wait过多的优化
    Emacs 电子邮件组件RMAIL
  • 原文地址:https://www.cnblogs.com/xiufengd/p/4739402.html
Copyright © 2011-2022 走看看