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