Oracle 11g和SQL顶级查询
使用SELECT TOP 5*FROM SOMETABLE时出错 ORA-00923:未在预期位置找到FROM关键字Oracle 11g和SQL顶级查询,sql,oracle11g,Sql,Oracle11g,使用SELECT TOP 5*FROM SOMETABLE时出错 ORA-00923:未在预期位置找到FROM关键字 我正在使用Oracle11g。我知道使用rownum也可以做同样的事情,但我只是想知道在Oracle中根本不支持SQL TOP的使用?要使SQL TOP在Oracle中正常工作,还需要做些什么吗 SQL TOP不适用于Oracle。Oracle不支持TOP。使用ROWNUM 不,Oracle不支持TOP 正如您所指出的,最好的方法是使用rownum。另一个选项是分析函数。rown
我正在使用Oracle11g。我知道使用rownum也可以做同样的事情,但我只是想知道在Oracle中根本不支持SQL TOP的使用?要使SQL TOP在Oracle中正常工作,还需要做些什么吗 SQL TOP不适用于Oracle。Oracle不支持TOP。使用ROWNUM
不,Oracle不支持TOP 正如您所指出的,最好的方法是使用rownum。另一个选项是分析函数。rownum关键字虽然可以获取所述的记录数,但只有在应用order by子句(如果有)后才能这样做 因此,如果SQL server查询如下所示,它将为您提供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
是的。。。顶是不行的。但我想谷歌叔叔也会告诉你的……谢谢你提供关于SQLFIDLE的信息:@Oracle:SQL本打算成为一个标准。表现得像一个人-1:这没有用。。。如果这有帮助,为什么不提供正确的方法?例如,在这个例子中如何使用rownum或ROW_NUMBER?@Dems,它说它已经知道rownum,他问它是否完全不支持Oracle。如果我解释过关于rownum的事,可能有人也会因此而投了反对票。我真的不明白,如果我回答了问题,为什么要投否决票。
SELECT * FROM (Select * from mytable order by created_date desc) where rownum < 10