我正在尝试对所有行重复以下查询。基本上我正在尝试将最近的城市(基于纬度和经度)映射到纬度和经度的地方。我有一个表 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 包含超过一百万行,是否有更有效的方法来做到这一点?谢谢。