如何在Oracle 11g的「select」查詢中添加偏移量。 我只知道如何添加限制,例如rownum <= 5
這個問題不是重複的,我已經檢查了其他問題,並且與我的無關。如何在Oracle 11g的「select」查詢中添加偏移量?
那麼,如何在Oracle 11g中添加偏移量?
如何在Oracle 11g的「select」查詢中添加偏移量。 我只知道如何添加限制,例如rownum <= 5
這個問題不是重複的,我已經檢查了其他問題,並且與我的無關。如何在Oracle 11g的「select」查詢中添加偏移量?
那麼,如何在Oracle 11g中添加偏移量?
您可以通過指定OFFSET
輕鬆地做到這一點上12c
。
在12c
,
SELECT val
FROM table
ORDER BY val
OFFSET 4 ROWS FETCH NEXT 4 ROWS ONLY;
爲了做同樣的11g
和之前,你需要分別兩次inner query
和outer query
使用ROWNUM
。
同樣的查詢在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
使用功能LAG或鉛在Oracle
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的例子
所有你需要的是'ROWNUM' – 2014-11-24 07:09:04
@Lalit Kumar B.只要限制ouptut中的行,你寫的內容是有意義的。我會說這個問題並不完全清楚,應該重新編寫(抵消可能會有不同的理解)。 – 2017-06-22 05:27:17
您可以使用ROW_NUMBER函數,該函數。
也許這會有所幫助:
SELECT *
FROM(SELECT t.*,
ROW_NUMBER() OVER (ORDER BY ...) rn -- whatever ordering you want
FROM your_table t
)
WHERE rn >= ... -- your offset
希望幫助
http://use-the-index-luke.com/sql/partial-results – 2014-11-24 08:29:18
問題應改寫爲你的意思偏移量可能會或可能不會與OFFSET子句相關。 – 2017-06-22 05:24:23