繁体   English   中英

Oracle 11g和SQL TOP查询

[英]Oracle 11g and SQL TOP query

使用SELECT TOP 5 * FROM SOMETABLE给出了一个错误

ORA-00923:未找到FROM关键字

我正在使用Oracle 11g。 我知道使用rownum做同样的事情,但只是想知道在Oracle中根本不支持SQL TOP使用? 有什么需要做额外的事情才能让SQL TOP在Oracle中运行?

Oracle不支持TOP 使用ROWNUM

SELECT * FROM your_table
WHERE ROWNUM <= 5

SQLFiddle示例

不,Oracle不支持TOP

正如您所指出的,最好的方法是使用rownum 另一种选择是分析函数ROW_NUMBER

rownum关键字,虽然它让你说不。 记录,只有在您按下order by子句后才会这样做。

因此,如果SQL服务器查询如下所示,它将为您提供10个最近创建的记录。

Select TOP 10 * from mytable order by created_date desc

但是为了适应Oracle,当你写这篇文章时,它会获得10条记录(可能不是最新的记录)并按降序排列,这不是你想要的。

Select * from mytable where rownum < 10 order by created_date desc

因此,使用这样的附加选择进行写作会有所帮助:

SELECT * FROM (Select * from mytable order by created_date desc) where rownum < 10 

SQL TOP不适用于Oracle。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM