错误消息:ORA-00923:找不到FROM关键字

时间:2016-10-24 01:28:40

标签: sql oracle

所以我正在使用oracle查询,我想获取最大的sighting_distance以及相应的sighting_id值,但是我仍然遇到ORA-00923:FROM关键字未找到预期错误。任何想法如何解决这个错误?

SELECT TOP 1 SIGHTING_ID, sqrt(((-28 - LATITUDE)*(-28 - LATITUDE)) + ((151 - LONGITUDE)*(151 - LONGITUDE))) AS "SIGHTING_DISTANCE" 
FROM(
    SELECT SIGHTING_ID, longitude, latitude 
    FROM SIGHTINGS)
GROUP BY SIGHTING_DISTANCE
ORDER BY ASC;

3 个答案:

答案 0 :(得分:1)

我不认为Oracle有TOP个关键字。相反,请尝试使用ROWNUM

SELECT *
FROM
(
    SELECT SIGHTING_ID,
           SQRT(((-28 - LATITUDE)*(-28 - LATITUDE)) + ((151 - LONGITUDE)*(151 - LONGITUDE))) AS "SIGHTING_DISTANCE" 
    FROM SIGHTINGS
    ORDER BY "SIGHTING_DISTANCE" DESC
)
WHERE ROWNUM = 1

我还修复了您的查询的其他一些问题。您不需要使用GROUP BY获取最大距离,并且无论如何您选择的是非聚合列的目击ID。此外,您不需要原始子查询。

答案 1 :(得分:0)

Oracle SQL中不存在

SELECT TOP 1 。选择子查询中的所有内容,对子查询进行排序,然后再次选择“ROWMUM = 1”。 (还有很多其他方法可以做到这一点 - 如果你有Oracle 12,那么有一个与“TOP 1”非常类似的新功能。)

答案 2 :(得分:0)

使用WHERE ROWNUM = 1代替TOP