MySQL select 行在地理位置范围内

MySQL select rows in Geolocation range

背景信息:我正在制作一个应用程序(学校项目),用户可以在其中搜索附近的项目。我的应用程序使用 table 个项目,其中存储了所有项目数据。

我需要获取用户当前位置(51.337036, 4.645095) 一定直径(5km) 内的行。在项目 table 中有用于定位项目的纬度和经度列。

在我当前的查询中,我可以 select 正方形(4 个坐标点)中的行,但我需要一个球体:

WHERE (C.latitude BETWEEN 50 AND 52) AND (C.longitude BETWEEN 3 AND 5)

是否可以使用 MySQL 地理位置变量或函数?

经过一些研究,我看到了一个类型 POINT,但是我的 table 没有那个类型(table 需要保持不变)。

AS 在评论中说你必须有一个有效的起源点

WHERE st_distance_sphere(POINT(-82.337036, 29.645095 ), POINT(C.`longitude`, C.`latitude` ))/1000 <= 2  AND T.difficulty = 1 AND T.terrain = 2;

这将为您提供距 POINT(-82.337036, 29.645095) 最大 2 公里距离的所有行

你必须把你自己的位置