如何在"中添加偏移量"在Oracle 11g中查询?

时间:2014-11-24 06:58:18

标签: sql oracle oracle11g pagination rownum

如何在Oracle 11g的“select”查询中添加偏移量。 我只知道如何通过rownum <= 5添加限制 这个问题不重复,我已经检查了其他问题,与我的问题无关。

那么,如何在Oracle 11g中添加偏移量?

3 个答案:

答案 0 :(得分:20)

您可以通过指定12cOFFSET上轻松完成。

12c

SELECT val
FROM   table
ORDER BY val
OFFSET 4 ROWS FETCH NEXT 4 ROWS ONLY;

要在11g及之前做同样的事情,您需要分别使用ROWNUM两次,inner queryouter query

11g中的相同查询,

SELECT val
FROM   (SELECT val, rownum AS rnum
        FROM   (SELECT val
                FROM   table
                ORDER BY val)
        WHERE rownum <= 8)
WHERE  rnum > 4;

此处OFFSET为4.

答案 1 :(得分:1)

您可以使用ROW_NUMBER函数。

也许这会有所帮助:

SELECT *
  FROM(SELECT t.*,
              ROW_NUMBER() OVER (ORDER BY ...) rn -- whatever ordering you want
         FROM your_table t
      )
 WHERE rn >= ... -- your offset

希望有所帮助

答案 2 :(得分:0)

在oracle中使用LAG或LEAD功能

The LAG function is used to access data from a previous row

The LEAD function is used to return data from the next row

用法: -

LAG  (value_expression [,offset] [,default]) OVER ([query_partition_clause] order_by_clause)
LEAD (value_expression [,offset] [,default]) OVER ([query_partition_clause] order_by_clause)

请查看this link示例