不确定该主题是否恰当地描述了我正在尝试的内容,但情况就是这样。我有一个 x、y 坐标和与之关联的位置的数据库。我想让用户提交带有 x 和 y 坐标的表单数据,并按接近 sqrt((x1-x2)^2 + (y1-y2)^2) 的顺序返回结果。我不确定如何将距离公式应用于要显示的结果集。关于如何解决这个问题的任何建议?
问问题
131 次
2 回答
0
平方根函数是单调递增的,所以如果 sqrt(a) 大于 sqrt(b),则 a 大于 b。因此,如果 SQRT 在您的 SQL 方言中不可用,您可以跳过它:
ORDER BY (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)
将其添加到 SQL 查询的末尾。
于 2013-03-23T05:03:16.253 回答
0
它真的没有那么难。只需将邻近度计算放入 order by 子句中即可。您的 SQL 需要是动态的,以便您可以替换 x 和 y 输入值。我继续并选择了邻近度计算,以便您可以看到排序中使用的值。
选择位置, sqrt((x-{x 输入值})^2 + (y-{y 输入值})^2) 作为
位置的接近度
按 sqrt((x-{x 输入值})^2 + ( y-{y 输入值})^2)
于 2013-03-23T05:10:06.413 回答