在 sql 数据库中查找最近的坐标

Finding Closest coordinates in sql database

我正在寻找一种快速方法(具有相对较短的查询长度)来查找数据库中 x、y、坐标最接近的行,return 最接近的 20 行。 closest as 在 x-y 坐标中最接近结果。数据库看起来像这样。

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

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

如有任何帮助,我们将不胜感激。谢谢!

如果这有帮助,我在 raspbian/debian

上使用 MariaDB 版本 10.3.27

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

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

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