关于mysql:Oracle“LIMIT n,m”等价

Oracle “LIMIT n,m” equivalent

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How do I limit the number of rows returned by an oracle query?

我有这个问题

1
select * from pr_device_reading order by date_reading DESC

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

相当于什么

1
2
3
4
SELECT *
 FROM pr_lecture_combustibles
ORDER BY date_lecture DESC
LIMIT 10,20;

使用Oracle SQL?

我试过了

1
2
3
4
5
SELECT *
  FROM (SELECT *
          FROM pr_lecture_combustibles
         ORDER BY date_lecture DESC)
 WHERE ROWNUM BETWEEN 10 AND 20;

以及其他语法,但我没有得到任何结果,"缺少表达式"消息和其他错误。

谢谢


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

1
2
3
4
5
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