mysql - St_within 用于获取 10 英里半径 MBR mysql

标签 mysql

我试图获取 10 英里内的数据,我尝试使用 mysql 示例,如下所示:

set @lat=16.7792468;
set @lng=96.1514016;
set @dist = 10;
set @rlon1 = @lon-@dist/abs(cos(radians(@lat))*69); 
set @rlon2 = @lon+@dist/abs(cos(radians(@lat))*69); 
set @rlat1 = @lat-(@dist/69); 
set @rlat2 = @lat+(@dist/69);

我使用此查询从数据库中选择 10 英里内的数据:

select
    *
from
    restaurants
where
    st_within((@rlng1, @rlat1), (@rlng2, @rlat2))
order by
    st_distance(@lng, @lat)
limit
    10;

但是我收到了这个错误:

ERROR 1241 (21000): Operand should contain 1 column(s)

我不知道出了什么问题或遗漏了什么。有任何建议欢迎^^

Reference link

最佳答案

不应该是st_within(POINT(@rlng1, @rlat1), POINT(@rlng2, @rlat2))在 where 子句中?

此外,st_distance需要两个几何对象,但提供了 lat + lng。

关于mysql - St_within 用于获取 10 英里半径 MBR mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59746612/

相关文章:

mysql - 如何漂亮地打印 Hive 输出

php - 如何通过单个查询从带有 where 过滤器的 30k MySQL 表中快速选择 3 条随机记录?

php - Zend SQL 语句以按出现次数查找和排序结果

mysql - 从一个表中删除另一个表中不存在的所有记录

MySQL Join 正在将结果相乘

mysql - 如何通过基于少数列值删除重复项来从两个表中获取数据

MySQL:如何根据结果集中的条件仅返回一行

mysql - 在 MySQL 中有条件地重复记录

Mysql内查询给出外查询所选表名的所有列名

mysql - 如何为所有远程用户要求 SSL