在 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;
如果您有不同的距离度量,您只需代入该公式即可。
我正在寻找一种快速方法(具有相对较短的查询长度)来查找数据库中 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;
如果您有不同的距离度量,您只需代入该公式即可。