MySQL经纬度距离查询

与世无争的帅哥 提交于 2020-02-05 20:14:02

在实际需求中,会有按某一坐标点查询其指定范围内的符合条件的数据,数据库中记录了数据的经纬度,在给出某一点位之后,需要我们动态计算其与其它信息的距离,然后筛选。

一个实例SQL如下:

注意:其中point字段类型为 point(mysql 5.6.1 增加了对空间数据支持功能,新增了st_*相关函数,可计算两个地理坐标点的距离)

参数:经度112.5590670000000000

           纬度37.8021270000000000

(其它信息: AreaCode = '140213' distance<100000 结合实际情况进行追加)

SELECT *
  FROM (SELECT name,
               Code,
               Address,
               Longitude,
               latitude,
               CONVERT(st_distance(point(112.5590670000000000,
                                         37.8021270000000000),
                                   point) * 111195,
                       DECIMAL(10, 2)) as distance
          FROM (SELECT Name,
                       Address,
                       Longitude,
                       Latitude,
                       point(Longitude, Latitude) point
                  FROM lift
                 WHERE AreaCode = '140213'
                   AND Longitude != '0.0000000000000000') t) tb
 WHERE tb.distance < 1000000
 ORDER BY distance;

先是通过一个子SQL虚拟出point值,然后进行st_distance()函数计算距离
可参照https://blog.csdn.net/liyantianmin/article/details/83042726

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!