Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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
mysql和psql语法中的差异——寻找最近的地理坐标_Mysql_Postgresql_Geolocation_Coordinates_Psql - Fatal编程技术网

mysql和psql语法中的差异——寻找最近的地理坐标

mysql和psql语法中的差异——寻找最近的地理坐标,mysql,postgresql,geolocation,coordinates,psql,Mysql,Postgresql,Geolocation,Coordinates,Psql,我发现一个psql代码如下所示: select * from ( SELECT *,( 3959 * acos( cos( radians(6.414478) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(12.466646) ) + sin( radians(6.414478) ) * sin( radians( lat ) ) ) ) AS distance FROM station_location ) al where

我发现一个psql代码如下所示:

select * from (
SELECT *,( 3959 * acos( cos( radians(6.414478) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(12.466646) ) + sin( radians(6.414478) ) * sin( radians( lat ) ) ) ) AS distance
FROM station_location
) al
where distance < 5
ORDER BY distance
LIMIT 20;
问题是我完全不明白。 在我使用mysql之前,语法完全不同:

SELECT latitude, longitude, SQRT(
POW(69.1 * (latitude - [startlat]), 2) +
POW(69.1 * ([startlng] - longitude) * COS(latitude / 57.3), 2)) AS distance
FROM TableName HAVING distance < 25 ORDER BY distance;

如何将此mysql指令转换为psql,以便用户的经度和纬度将越来越惊人?

不评论计算本身,此PostgreSQL端口应该可以工作:

select * from (select SQRT(
POW(69.1 * (10 - 8), 2) +
POW(69.1 * (100 - 10) * COS(10 / 57.3), 2)) AS distance
from table) d where distance < 25 ORDER BY distance;