5

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

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

2 回答 2

9

类似于以下内容:

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

于 2012-08-07T15:13:30.790 回答
1

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

select job_name from dba_scheduler_jobs where rownum < 10;

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

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

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

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

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

于 2012-08-08T04:48:13.533 回答