如题,麻烦个位前辈详细的跟小弟说说,谢谢。

解决方案 »

  1.   

    用rownum
    如果select + order by 包3层
    如果分析函数 包2层
      

  2.   

    假设你1页是20条记录,那么显示第5页的代码如下:select * from (select t.*,rownum rn from t) where rn > 4 * 20 and rn <= 5 * 20
    首先通过一个子查询
    select t.*,rownum rn from t
    来给返回的记录中加上行号,
    然后通过
    where rn > 4 * 20 and rn <= 5 * 20
    过滤出符合条件的记录。这里需要注意的是rownum不能直接在where 条件中进行>,>=,=等逻辑判定,此类判定的结果永远是false,所以需要通过一个子查询转换成一个普通的列rn再进行比较。
      

  3.   

    一般select 切记要包3层  另外没有order by的排序 么有什么意义
    会随着数据量得变化 分页显示跟着变化
      

  4.   


      SELECT * FROM 
             (
           SELECT A.*, 
                  ROWNUM RN 
            FROM (
                  SELECT * FROM TABLE_NAME
                  ) A 
           WHERE ROWNUM <= 40
             )
    WHERE RN >= 21其中最内层的查询SELECT * FROM TABLE_NAME表示不进行翻页的原始查询语句。ROWNUM <= 40和RN >= 21控制分页查询的每页的范围。
      

  5.   


      SELECT * FROM 
             (
           SELECT A.*, 
                  ROWNUM RN 
            FROM (
                  SELECT * FROM TABLE_NAME
                  ) A 
           WHERE ROWNUM <= 40
             )
    WHERE RN >= 21其中最内层的查询SELECT * FROM TABLE_NAME表示不进行翻页的原始查询语句。ROWNUM <= 40和RN >= 21控制分页查询的每页的范围。