根据距离返回匹配的sql行

时间:2016-01-13 16:51:39

标签: mysql sql database gis

实际上非常简单,我只是不知道该怎么做。

我有一张桌子:

table locations 
location_id     coordinates    name
-------------------------------------

当我从设备收到纬度和经度时,我将它存储在类型为POINT(Long,Lat)的mysql中的变量中。

我正在尝试获取Locations表中距离小于或等于8米的所有行。

我的查询如下:

SELECT * FROM locations where st_distance_sphere(@userCoords, @pt1)  <= 8; 

我知道此查询错误,因为@pt1与列坐标无关。如何隔离坐标列中的特定值并返回匹配的行列表?

st_distance_sphere()函数只计算两个坐标之间的距离并返回一个数字。

提前谢谢!

1 个答案:

答案 0 :(得分:2)

你需要的只是把列放在@pt1上(假设列类型是Point):

SELECT * 
FROM locations 
where st_distance_sphere(@userCoords, coordinates)  <= 8; 

这将为您提供@userCoords

中坐标为8或更小的所有行