Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 错误消息:ORA-00923:FROM关键字未在预期位置找到_Sql_Oracle - Fatal编程技术网

Sql 错误消息:ORA-00923:FROM关键字未在预期位置找到

Sql 错误消息:ORA-00923:FROM关键字未在预期位置找到,sql,oracle,Sql,Oracle,因此,我目前正在处理一个oracle查询,我想获取最大视距及其相应的视距id值,但是我一直遇到ORA-00923:FROM关键字not found where expected error。有没有办法修复这个错误 SELECT TOP 1 SIGHTING_ID, sqrt(((-28 - LATITUDE)*(-28 - LATITUDE)) + ((151 - LONGITUDE)*(151 - LONGITUDE))) AS "SIGHTING_DISTANCE" FROM( S

因此,我目前正在处理一个oracle查询,我想获取最大视距及其相应的视距id值,但是我一直遇到ORA-00923:FROM关键字not found where expected error。有没有办法修复这个错误

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;

SELECTTOP 1在Oracle SQL中不存在。选择子查询中的所有内容,对子查询排序,然后再次选择所有内容“where ROWMUM=1”。(还有很多其他方法可以做到这一点——如果你有Oracle 12,那么有一个与“TOP 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

我还修复了您的查询中的一些其他问题。您不需要使用
groupby
获取最大距离,而且在任何情况下,您都是在选择非聚合列的瞄准ID。另外,您不需要原始子查询。

使用
其中ROWNUM=1
而不是
TOP

TOP不是Oracle。。。还有由ASC订购的
?谢谢!!这解决了错误,但实现上面的方法给了我一个无效的视距标识符,还有什么其他提示导致了这个错误?因为你选择的是视距ID,但是你的组有视距。