所以我正在使用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;
答案 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)
SELECT TOP 1 。选择子查询中的所有内容,对子查询进行排序,然后再次选择“ROWMUM = 1”。 (还有很多其他方法可以做到这一点 - 如果你有Oracle 12,那么有一个与“TOP 1”非常类似的新功能。)
答案 2 :(得分:0)
使用WHERE ROWNUM = 1
代替TOP
。