日期:2014-05-17  浏览次数:21030 次

Oracle跳转分页的问题,急求高手解决
现在要做一个这样的需求
   根据用户输入的主键,跳转到主键数据所在的页数列
如:表Test有数据
   id    cont
   1      a
   2      aa
   3      b
   4      6
   5      0
   6      2
分页,按2条数据为一页
  如果用户如数据  id=4 ,查询数据返回结果为
   id    cont
   3      b
   4      6
   如果用户如数据  id=5 ,查询数据返回结果为
   id    cont
   5      0
   6      2

------解决方案--------------------
引用:
现在要做一个这样的需求
   根据用户输入的主键,跳转到主键数据所在的页数列
如:表Test有数据
   id    cont
   1      a
   2      aa
   3      b
   4      6
   5      0
   6      2
分页,按2条数据为一页
  如果用户如数据  id=4 ,查询数据返回结果为
   id    cont
   3      b
   4      6
   如果用户如数据  id=5 ,查询数据返回结果为
   id    cont
   5      0
   6      2



WITH T AS
 (SELECT 1 ID, 'a' CONT
    FROM DUAL
  UNION ALL
  SELECT 2 ID, 'aa' CONT
    FROM DUAL
  UNION ALL
  SELECT 3 ID, 'b' CONT
    FROM DUAL
  UNION ALL
  SELECT 4 ID, 'c' CONT
    FROM DUAL
  UNION ALL
  SELECT 5 ID, 'd' CONT
    FROM DUAL
  UNION ALL
  SELECT 6 ID, 'ae' CONT
    FROM DUAL)
SELECT T3.*
  FROM (SELECT T.*, ROUND(ROWNUM / 2) RN FROM T) T3,
       (SELECT T2.RN
          FROM (SELECT T1.*, ROUND(ROWNUM / 2) RN FROM T T1) T2
         WHERE T2.ID = 6) T4
 WHERE T3.RN = T4.RN;