mysql 我要所有检索所有数据的客户在半径与经度和纬度为1公里

9avjhtql  于 2023-01-20  发布在  Mysql
关注(0)|答案(2)|浏览(112)

我正在使用redash,我的表看起来像这样。我刚刚学习sql。这对我来说非常高级。我搜索了很多问题,没有一个查询对我有效

|user_id | long | lat  |
|1       |31.000|26.000|
|2       |30.000|25,000|
|3       |30.003|25,007|

我需要获取在该点使用我的服务的所有客户,半径为1 km,我的表类似于上面所写的表,添加用户1的点是我的中心点

kr98yfug

kr98yfug1#

这是一项艰巨的任务,因为经度1在不同的地区是不同的公里数(极点为零,赤道为111公里)。
因此,您很可能首先使用您所在国家范围内的一些值过滤数据,然后使用一些专门的库计算确切的距离。
如果你有准确的点之前搜索,你必须
1.请问MySQL外库在该地区的经纬度距离1 km是多少
1.用pointX-deltaX,pointX-deltaX和pointY- deltaY,pointY+deltaY过滤你的数据集。之后你会得到包含你的圆的正方形
1.通过专业库或数学公式计算距离,保证其为圆。

eagi6jfj

eagi6jfj2#

可以使用空间函数

SELECT 
    ppl.user_id,
    ST_DISTANCE_SPHERE(POINT(31.000, 26.000),
            POINT(ppl.Long, ppl.Lat))  AS distance
FROM
    `mtytable` AS ppl
WHERE
  user_id  > 1 
HAVING distance < 1000

相关问题