Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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中使用纬度和经度计算多行距离的函数_Mysql - Fatal编程技术网

如何在MySQL中使用纬度和经度计算多行距离的函数

如何在MySQL中使用纬度和经度计算多行距离的函数,mysql,Mysql,这是我做的函数: create function Route_Distance (lat1 FLOAT, lng1 FLOAT, lat2 FLOAT, lng2 FLOAT) returns float deterministic begin return 6371 * 2 * ASIN(SQRT(POWER(SIN((lat1-lat2)*pi()/180 /2), 2) + COS(lat1 * pi()/180) * COS(lat2 * pi()/1

这是我做的函数:

create function Route_Distance (lat1 FLOAT, lng1 FLOAT, lat2 FLOAT, lng2 FLOAT)
   returns float
   deterministic
   begin 
       return 6371 * 2 * ASIN(SQRT(POWER(SIN((lat1-lat2)*pi()/180 /2), 2)
 + COS(lat1 * pi()/180) * COS(lat2 * pi()/180) * POWER(SIN((lng1 - lng2)
 * pi()/180 /2), 2)));

 End
这是我需要的表格,用于计算与被调用路线的距离。\u距离:


----------------------------------------------------
    lat1     |    lng1     |    lat2     | lng2     |
----------------------------------------------------
   59.914    |   -61.111   |      43.211 | 54.231
----------------------------------------------------

所以我使用的函数是:

 select route_distance(lat1,lng1,lat2, lng1)
from routes_distance;


为什么我的结果有一行零?表格要长得多,我只显示了第一行。我想使用此函数计算所有行。

您的代码在中运行良好。如果我手动键入值,我发现它也适用于我。但我有大约1000个纬度和经度值。在这种情况下,我该如何计算距离?我不明白为什么1000和1会有任何不同。我认为我的表有问题,因为我使用JOIN(从两个不同的表)创建了表。当我通过函数运行它时,我得到空值。然而,如果我从头开始创建表,而不使用JOIN,并手动创建字段并键入纬度和经度值,则在这种情况下它会工作。这很奇怪。当我使用JOIN(从两个不同的表)创建表时,我的表出现了一些问题。当我通过函数运行它时,我得到空值。全部的一些编辑小提琴。添加表的结构。从数据库中转储并添加到fiddle 10-12记录中,该记录将提供空值。给链接编辑小提琴。从两个不同的表格中,这个过程可能有问题吗?创建一个源表、一些数据和查询,将数据传输到有问题的表中。