选择最后12行oracle

时间:2012-08-07 15:10:16

标签: oracle select

我想在oracle中做一个返回或多或少300行的select,但我只想要最后12个注册表。这是查询:

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

在构造查询的结果集时,Oracle RDBMS使用名为 rownum 的伪列。结果中的每一行都按升序编号,从0开始。您可以按如下方式评估条件:

select job_name from dba_scheduler_jobs where rownum < 10;

这将返回它找到的前10行。

重要的是要记住,在从数据库中提取记录之后但在查询中的order by子句之前评估rownum。

因此,您的查询应如下所示:

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

您应该将order by子句设置为升序或降序,具体取决于您要获取的行。