2012-08-07 141 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; 

你应该通过条款中的顺序上升或下降,这取决于你想获得哪些行。