我想在 oracle 中进行选择,返回或多或少 300 行,但我只想要最后 12 个注册表。这是查询:
(SELECT *
FROM series
ORDER BY odata DESC) estatisticas
WHERE ponteiro = 50 AND lotus = 30
类似于以下内容:
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
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 子句设置为升序或降序,具体取决于您要获取的行。