我正在尝试获取5 KM半径内的所有用户。这里是我的表结构使用列值作为列名mysql
id| location
-------------
1| 26.851791,75.781810
2| 26.860729,75.7633127
3| 34.057811,-84.239125
我编写一个查询依据lat
和long
SELECT SUBSTRING_INDEX(location, ',', 1) AS lat, SUBSTRING_INDEX(location, ',', -1) AS lng
FROM `users_test`
LIMIT 0 , 30
哪个做工精细分离的位置,我得到的结果如下
然后根据以下博客编写查询以获取所有5KM Radius用户。
https://www.marketingtechblog.com/calculate-distance/
SELECT *,SUBSTRING_INDEX(location, ',', 1) AS lat, SUBSTRING_INDEX(location, ',', -1) AS lng,(((acos(sin(("26.851791"*pi()/180)) * sin((`lat`*pi()/180))+cos(("26.851791"*pi()/180)) * cos((`lat`*pi()/180)) * cos((("75.781810"- `lng`)*pi()/180))))*180/pi())*60*1.1515*1.609344) as distance
FROM `users_test`
WHERE distance >= "5"
,但我得到下面的错误。
#1054 - 在 '字段列表' 未知列 '纬度'
谁能告诉我在哪里,我错了。
你不能在字段列表中使用别名 – splash58