我正在尝试为所有行重复以下查询。基本上,我正在尝试将最接近的城市(根据纬度和经度)映射到地点的纬度和经度。我有一个包含需要映射的地点的表places,以及一个包含要匹配的地点的CityTable表。我有以下查询适用于单个行:
SELECT p.placeID, p.State, p.City, p.County, p.name,
SQRT(POW((69.1 * (p.lat - z.Latitude)), 2 )
+ POW((53 * (p.lng - z.Loungitude)), 2)) AS distance,
p.lat,p.lng,z.Latitude,z.Loungitude,z.City
FROM places p,CityTable z
WHERE p.placeID = 1
ORDER BY distance ASC
LIMIT 1;
这适用于单个位置。显然,我需要删除WHERE约束条件才能将其应用于整个表格。我遇到的问题是它似乎想要复制以与表中的每个其他元素进行比较。例如,如果p中有100行,z中也有100行,则生成的表似乎为10,000行。我需要表的大小为p的count(*)。有什么建议吗?如果我的p表包含超过一百万行,是否有更有效的方法来执行此操作?谢谢。