先需要更具一个给定经纬度获取小于10KM的数据并且按距离最近的排序:
SELECT id, ( 6377.830 * acos ( cos ( radians(39.620076) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(116.067221) ) + sin ( radians(39.620076) ) * sin( radians( lat ) ) ) ) AS distance FROM merchant_store HAVING distance < 10 ORDER BY distance LIMIT 0, 20;说明:
6377.830是地球半径
10:是km数
39.620076:是给定的纬度
116.067221:是给定的经度
此种方式虽然不推荐使用(无法使用Mysql索引),但也是一个可行的方案。