我有一个位置表,现在我从提供商那里得到了新的位置。我的要求是更新相同的内容,并添加/删除我找不到匹配的人。 问题是我得到街道地址的位置有差异,例如父文件包含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第三街被添加,因为它是新商人
我唯一拥有的是纬度和经度,这就是为什么我要去 如果距离最短则更新