2011-04-20 54 views
2

可能重複:
How do I limit the number of rows returned by an oracle query?甲骨文 「LIMIT N,M」 相當於

我有這個疑問

select * from pr_device_reading order by date_reading DESC 

注意,這種查詢是標準化,構建通過一種方法,表名將根據方法a改變參數,所以我不能指定列名稱(並且我確實需要結果中的所有列)。

什麼是使用Oracle SQL

SELECT * 
FROM pr_lecture_combustibles 
ORDER BY date_lecture DESC 
LIMIT 10,20; 

等價?

我已經試過

SELECT * 
    FROM (SELECT * 
      FROM pr_lecture_combustibles 
     ORDER BY date_lecture DESC) 
WHERE ROWNUM BETWEEN 10 AND 20; 

other syntax,但我沒有得到任何結果,「失蹤表達」消息和其他錯誤。

感謝

+0

對不起,我沒有發現這個問題做一個快速搜索 – 2011-04-20 19:31:27

+0

我相信你需要給一個別名衍生TA BLE。 'FROM(....)as A'。 – Lamak 2011-04-20 19:31:53

+0

在Oracle 12c中使用FETCH:http://stackoverflow.com/a/18972336/290182 – beldaz 2013-09-24 03:13:12

回答

2

如果你能接受得到一個額外的列行號,您可以將ROW_NUMBER解析函數做這樣的事情

SELECT * 
    FROM (SELECT a.*, 
       ROW_NUMBER() OVER(order by date_lecture desc) rn 
      FROM pr_lecture_combustibles a) 
WHERE rn BETWEEN 10 AND 20 

但你會得到所有在列表RN