2012-08-07 123 views
2

我想在oracle中做一個選擇返回300行或多或少的行,但我只想要12個最後的註冊表。下面是該查詢:選擇最後12行oracle

(SELECT * 
FROM series 
ORDER BY odata DESC) estatisticas 
WHERE ponteiro = 50 AND lotus = 30 
+0

哪個Oracle版本? – 2012-08-07 15:11:34

+11

@Gladnick:[This](http://stackoverflow.com/revisions/11848905/3)不是一個非常好的建議編輯。代碼格式只能用於代碼。請在進行更多建議編輯之前瞭解如何正確使用代碼格式。我們不需要更多的華麗。謝謝。 – 2012-08-07 16:03:17

回答

6

線沿線的東西:

select * from 
    (select estatisticas, rownum rn 
     (SELECT * 
     FROM series 
     ORDER BY odata DESC) estatisticas 
     WHERE ponteiro = 50 AND lotus = 30 
    order by odata asc) where rownum <=12 

編輯: 更新它爲您查詢,您希望將其排序的內部查詢的對面,你的情況上升,因此您可以獲得最後的12

+0

Tnx很多人,它的作品! – 2012-08-08 14:19:20

1

構建查詢的結果集時,Oracle RDBMS使用名爲rownum的僞列。結果中的每一行按上升次序編號,從0開始,您可以按照如下方式評價條件:

select job_name from dba_scheduler_jobs where rownum < 10; 

這將返回前10行找到。

請務必記住,在從數據庫中提取記錄之後但在查詢中的子句順序之前對rownum進行計算。

所以,你的查詢應如下所示:

SELECT * FROM 
((SELECT * FROM series 
    ORDER BY odata DESC) estatisticas 
    WHERE ponteiro = 50 AND lotus = 30 [ASC/DESC]) 
WHERE rownum < 12; 

你應該通過條款中的順序上升或下降,這取決於你想獲得哪些行。