Oracle“LIMIT n,m”等效

时间:2011-04-20 19:27:51

标签: mysql sql oracle

  

可能重复:
  How do I limit the number of rows returned by an oracle query?

我有这个查询

select * from pr_device_reading order by date_reading DESC

注意这个查询是规范化的,由方法构造,并且表名将根据方法的参数而改变,所以我不能指定列名(我确实想要所有的无论如何,结果中的列。)

等同于

SELECT * 
 FROM pr_lecture_combustibles 
ORDER BY date_lecture DESC 
LIMIT 10,20;

使用Oracle SQL?

我试过了

SELECT * 
  FROM (SELECT * 
          FROM pr_lecture_combustibles 
         ORDER BY date_lecture DESC) 
 WHERE ROWNUM BETWEEN 10 AND 20;

other syntax,但我没有结果,“缺少表达式”消息和其他错误。

由于

1 个答案:

答案 0 :(得分:2)

如果您可以接受为行号获取额外的列,则可以应用ROW_NUMBER分析函数并执行类似的操作

SELECT *
  FROM (SELECT a.*,
               ROW_NUMBER() OVER( order by date_lecture desc ) rn
          FROM pr_lecture_combustibles a)
 WHERE rn BETWEEN 10 AND 20

但是,您将获得表格中的所有列加上 RN