【问题标题】:Finding Closest coordinates in sql database在sql数据库中查找最近的坐标
【发布时间】:2021-06-28 13:02:32
【问题描述】:

我正在寻找一种快速方法(查询长度相对较短)来查找数据库中 x、y、坐标最近的行,并返回最接近的 20 个。 x-y 坐标中的最接近结果最接近结果。数据库如下所示。

-----------------
|Stuff  | x | y  |
------------------
|bob    |-21| 32 |
|Joe    |23 | 29 |
------------------

所以,搜索应该是 x=19, y=32,我想要 20 个最接近的结果,按接近度排序。 X-Y 是一个完全正方形的网格。

任何帮助将不胜感激。谢谢!

如果这有帮助,我在 raspbian/debian 上使用 MariaDB 版本 10.3.27

【问题讨论】:

  • 请定义“最接近”。

标签: mysql sql mariadb


【解决方案1】:

一种最接近的测量方法是使用曼哈顿差,即差的绝对值之和:

select t.*
from t
order by abs(x - @x) + abs(y - @y)
limit 20;

如果您有不同的距离度量,您只需插入该公式即可。

【讨论】:

    猜你喜欢
    • 2015-07-11
    • 2019-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多