我正在使用redash,我的表看起来像这样。我刚刚学习sql。这对我来说非常高级。我搜索了很多问题,没有一个查询对我有效
|user_id | long | lat | |1 |31.000|26.000| |2 |30.000|25,000| |3 |30.003|25,007|
我需要获取在该点使用我的服务的所有客户,半径为1 km,我的表类似于上面所写的表,添加用户1的点是我的中心点
kr98yfug1#
这是一项艰巨的任务,因为经度1在不同的地区是不同的公里数(极点为零,赤道为111公里)。因此,您很可能首先使用您所在国家范围内的一些值过滤数据,然后使用一些专门的库计算确切的距离。如果你有准确的点之前搜索,你必须1.请问MySQL外库在该地区的经纬度距离1 km是多少1.用pointX-deltaX,pointX-deltaX和pointY- deltaY,pointY+deltaY过滤你的数据集。之后你会得到包含你的圆的正方形1.通过专业库或数学公式计算距离,保证其为圆。
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
2条答案
按热度按时间kr98yfug1#
这是一项艰巨的任务,因为经度1在不同的地区是不同的公里数(极点为零,赤道为111公里)。
因此,您很可能首先使用您所在国家范围内的一些值过滤数据,然后使用一些专门的库计算确切的距离。
如果你有准确的点之前搜索,你必须
1.请问MySQL外库在该地区的经纬度距离1 km是多少
1.用pointX-deltaX,pointX-deltaX和pointY- deltaY,pointY+deltaY过滤你的数据集。之后你会得到包含你的圆的正方形
1.通过专业库或数学公式计算距离,保证其为圆。
eagi6jfj2#
可以使用空间函数