如何在mysql中进行数学计算?

时间:2015-07-12 02:55:53

标签: mysql math distance

假设我有一张这样的表

ID   Point   x     y     z
---  ----   ---   ---   ---
1     A      3     2     1    
2     B      1     3     2
3     C      2     4     1
4     D      1     3     3
5     E      5     1     2

我想在(x,y,z) = (1,2,3)

中得到最接近N的点

要获得最近的点,我们需要欧几里德距离公式。 可以说,[(N(x)-data(x))^2 + (N(y)-data(y))^2 + (N(z)-data(z))^2]

的平方根

如何查询包含欧几里德距离公式以选择我想要的行?

1 个答案:

答案 0 :(得分:1)

只需使用order bylimit

select t.*
from table t
order by power(x - 1, 2) + power(y - 2, 2) + power(z - 3, 2)
limit 1;

如评论中所述,您实际上并不需要平方根,因为排序是相同的。

顺便说一句,您可以将计算放在select中,这样您就可以返回距离:

select t.*,
       sqrt(power(x - 1, 2) + power(y - 2, 2) + power(z - 3, 2)) as distance
from table t
order by distance
limit 1;