使用时SELECT TOP 5 * FROM SOMETABLE
给我一个错误
ORA-00923: 在预期的地方找不到 FROM 关键字
我正在使用 Oracle 11g 。我知道rownum
用于做同样的事情,但只是想知道 Oracle 根本不支持 SQL TOP 使用?为了使 SQL TOP 在 Oracle 中工作需要做任何额外的事情吗?
不,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。