基于距离公式排序SQL结果


Ordering SQL results based on distance formula

不确定主题是否恰当地描述了我正在尝试的内容,但情况是这样的。我有一个x, y坐标的数据库以及与之相关的位置。我想让用户提交表单数据与x和y坐标,并返回接近的顺序的结果sqrt((x1-x2)^2 + (y1-y2)^2)。我真的不确定如何将距离公式应用于要显示的结果集。有什么建议吗?

这真的没那么难。只需将邻近计算放入order by子句中。您的SQL需要是动态的,以便您可以替换x和y输入值。我还选择了接近计算,这样你就可以看到排序中使用的值。

select location, sqrt((x-{x输入值})^2 + (y-{y输入值})^2)作为proximity
从位置
order by√(x - {x输入值})^ 2 + (y - {y输入值})^ 2)

平方根函数是单调递增的,因此如果sqrt(a)大于sqrt(b),则a大于b。因此,如果sqrt在SQL方言中不可用,您可以跳过它:

ORDER BY (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)

添加到SQL查询的末尾