mysql位置距离排序功能实现

哈根达斯
2021-07-22 / 0 评论 / 270 阅读 / 正在检测是否收录...

再实际的开发中,我们经常需要使用地理经纬度信息来做排序,比如查找附近的门店,或查找离我最近的人的需求等。

可直接套用下方mysql查询语句进行数据查询排序

  • sql中latitude为数据库表中的纬度,longitude代表经度
  • {latitude} 代表传入的纬度,{latitude} 代表传入的经度,主要为用户当前位置信息,

查询获得结果 distance 单位为米

SELECT *, (round(6367000 * 2 * asin(sqrt(pow(sin(((latitude * pi()) / 180 - (${latitude} * pi()) / 180) / 2), 2) + cos((${latitude} * pi()) / 180) * cos((latitude * pi()) / 180) * pow(sin(((longitude * pi()) / 180 - (${longitude} * pi()) / 180) / 2), 2))))) AS distance
        FROM ec_store WHERE is_show = 1 and is_del = 0
        ORDER BY distance asc
1

评论 (0)

取消