实际上非常简单,我只是不知道该怎么做。
我有一张桌子:
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()
函数只计算两个坐标之间的距离并返回一个数字。
提前谢谢!
答案 0 :(得分:2)
你需要的只是把列放在@pt1
上(假设列类型是Point):
SELECT *
FROM locations
where st_distance_sphere(@userCoords, coordinates) <= 8;
这将为您提供@userCoords
中坐标为8或更小的所有行