根据距离公式排序SQL结果

时间:2013-03-23 04:56:31

标签: php sql distance formula

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

2 个答案:

答案 0 :(得分:0)

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

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

将其添加到SQL查询的末尾。

答案 1 :(得分:0)

真的不那么难。只需将邻近计算放入order by子句中即可。您的SQL需要是动态的,因此您可以替换x和y输入值。我继续选择接近度计算,以便您可以看到排序中使用的值。

选择位置,sqrt((x- {x输入值})^ 2 +(y- {y输入值})^ 2)作为接近度
从位置
按sqrt排序((x- {x输入值})^ 2 +(y- {y输入值})^ 2)