一尘不染

等同于Oracle“ IMIT n,m”

sql

这个问题已经在这里有了答案

9年前关闭。

可能重复:
如何限制oracle查询返回的行数?

我有这个查询

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;

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

谢谢


阅读 146

收藏
2021-03-17

共1个答案

一尘不染

如果您可以接受为行号获取额外的列,则可以应用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

2021-03-17