2

使用时SELECT TOP 5 * FROM SOMETABLE给我一个错误

ORA-00923: 在预期的地方找不到 FROM 关键字

我正在使用 Oracle 11g 。我知道rownum用于做同样的事情,但只是想知道 Oracle 根本不支持 SQL TOP 使用?为了使 SQL TOP 在 Oracle 中工作需要做任何额外的事情吗?

4

4 回答 4

11

甲骨文不支持TOP。采用ROWNUM

SELECT * FROM your_table
WHERE ROWNUM <= 5

SQLFiddle 示例

于 2012-10-31T14:21:31.213 回答
2

不,Oracle 不支持TOP.

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

于 2012-10-31T14:21:33.543 回答
0

关键字,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 
于 2016-01-04T04:48:59.547 回答
-1

SQL TOP 不适用于 Oracle。

于 2012-10-31T14:21:23.717 回答