我在查询时遇到问题:
SELECT Store_name, GPS_latitude, GPS_longitude, SQRT(
POW(69.1 * (GPS_latitude - $longitude), 2) +
POW(69.1 * ($latitude - GPS_longitude) * COS(GPS_latitude / 57.3), 2)) AS distance
FROM table HAVING distance < 25 ORDER BY distance
网站的用户应该能够输入坐标(纬度和经度)。从那里开始,我希望上面的查询列出表中的商店,这些商店按照给定$ latitude和$ longitude的用户的距离排序。
我确实得到了结果,但只有当我从&#39;距离&lt; 25&#39;到&#39;距离&lt; 5000&#39; (或其他大数字),虽然结果似乎不是基于距离用户给定坐标的距离。
这是以错误的方式计算这个问题的查询吗?我很困难,我似乎无法找到任何解决方案。
答案 0 :(得分:1)
试试这个:
select * from (
SELECT Store_name, GPS_latitude, GPS_longitude,
SQRT(
POW(69.1 * (GPS_latitude - $longitude), 2) +
POW(69.1 * ($latitude - GPS_longitude) * COS(GPS_latitude / 57.3), 2)
) AS distance
FROM table
) as vtab
WHERE distance < 25
ORDER BY distance;
PS但我强烈建议你看一下&#34;特定于MySQL的空间关系函数&#34;