我想通过附近的过滤器和距离的限制从mysql数据库中获取行

Posted

技术标签:

【中文标题】我想通过附近的过滤器和距离的限制从mysql数据库中获取行【英文标题】:I want to fetch rows from mysql database with filter by near by and the limit of distance 【发布时间】:2019-04-21 16:18:25 【问题描述】:

我想从mysql 数据库中获取行,并使用附近的过滤器和距离的限制。我创建了一个查询,可以正常获取附近的数据,但我想添加距离限制条件,这意味着如果我想要位置为 20 公里的行。 这是在附近工作的查询。

$lat="";
$lon="";
$sql="SELECT *, 
  111.111 *
    DEGREES(ACOS(COS(RADIANS(".$lat."))
         * COS(RADIANS(Lat))
         * COS(RADIANS(".$lon." - Lon))
         + SIN(RADIANS(".$lat."))
         * SIN(RADIANS(Lat)))) AS d
FROM Table
ORDER BY d"

【问题讨论】:

【参考方案1】:

您可以使用 HAVING 子句来实现这一点

$sql="SELECT *, 
  111.111 *
    DEGREES(ACOS(COS(RADIANS(".$lat."))
         * COS(RADIANS(Lat))
         * COS(RADIANS(".$lon." - Lon))
         + SIN(RADIANS(".$lat."))
         * SIN(RADIANS(Lat)))) AS d
FROM Table HAVING d <= 20
ORDER BY d"

【讨论】:

(或WHERE 111.111 * ... &lt;=20

以上是关于我想通过附近的过滤器和距离的限制从mysql数据库中获取行的主要内容,如果未能解决你的问题,请参考以下文章

如何获取附近的用户和距离?

如何获得附近的用户和距离?

根据距离过滤谷歌地图标记

在 MySQL 中调用一个函数来过滤掉用户当前位置附近的餐馆

对数据有距离限制的空间查询

Java,Mysql-根据一个给定经纬度的点,进行附近500米地点查询–合理利用算法