2011-04-20 51 views
2

可能重复:
How do I limit the number of rows returned by an oracle query?甲骨文 “LIMIT N,M” 相当于

我有这个疑问

select * from pr_device_reading order by date_reading DESC 

注意,这种查询是标准化,构建通过一种方法,表名将根据方法a改变参数,所以我不能指定列名称(并且我确实需要结果中的所有列)。

什么是使用Oracle SQL

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

等价?

我已经试过

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

other syntax,但我没有得到任何结果,“失踪表达”消息和其他错误。

感谢

+0

对不起,我没有发现这个问题做一个快速搜索 – 2011-04-20 19:31:27

+0

我相信你需要给一个别名衍生TA BLE。 'FROM(....)as A'。 – Lamak 2011-04-20 19:31:53

+0

在Oracle 12c中使用FETCH:http://stackoverflow.com/a/18972336/290182 – beldaz 2013-09-24 03:13:12

回答

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