寻找两个地点之间的最短距离

时间:2019-04-12 17:46:24

标签: mysql join

我有一个位置表,现在我从提供商那里得到了新的位置。我的要求是更新相同的内容,并添加/删除我找不到匹配的人。 问题是我得到街道地址的位置有差异,例如父文件包含st,新文件包含套件。因此我无法在街道地址上匹配它们,因此必须进行经纬度测试。 我的策略是找到表A和表B中所有商人之间的距离,以我发现最短的那个人为准。但是我在努力编写查询。 这是我现在拥有的

SELECT 
m.LocationID,
 m.ID,
  MIN(m.dist) AS D 
        FROM 
 (
       SELECT tm.LocationID, pm.Id, 
       st_distancc(point(pm.Longitude, pm.Latitude ), point( 
           tm.Longitude,tm.Latitude))*0.00062137 AS dist
        FROM parentlocation pm 
      JOIN  tmplocation tm ON  1=1
      ) AS m
       GROUP BY m.LocationID, m.Id;

问题在于查询未对一个位置进行一对一过滤。 任何帮助将不胜感激。

这是样本数据

Table A (Existing Table)
name     Address      ZipCode   Latitue       Longitude
A       123 test st   97845    42.30192580    -93.1720448
A       245 first st  78945    45.0130336     -93.1720448
A       789 second st 74521    42.6997965     -87.8487916

Table B (New data)
name     Address          ZipCode   Latitue       Longitude
A       123 test street   97845    42.30192577    -93.1720448
A       245 Third st      45612    49.0130336     -99.1720448

所以最终结果我要 123测试街头商人获得新地址的更新 245由于第一个商人不在第二个表中,因此被删除  245第三街被添加,因为它是新商人

我唯一拥有的是纬度和经度,这就是为什么我要去 如果距离最短则更新

0 个答案:

没有答案