如何在mysql中进行数学计算?
how to do mathematical calculation in mysql?
假设我有一个这样的table
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
我想得到离 N 最近的点 (x,y,z) = (1,2,3)
为了得到最近的点,我们需要欧氏距离公式。
比方说,[(N(x)-data(x))^2 + (N(y)-data(y))^2 + (N(z)-data(z))^2]
的平方根
如何查询包含到 select 我想要的行的欧氏距离公式?
只需使用 order by
和 limit
:
select t.*
from table t
order by power(x - 1, 2) + power(y - 2, 2) + power(z - 3, 2)
limit 1;
如评论中所述,您实际上不需要平方根,因为顺序相同。
顺便说一句,你可以把计算放在 select
这样你就可以 return 距离:
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;
假设我有一个这样的table
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
我想得到离 N 最近的点 (x,y,z) = (1,2,3)
为了得到最近的点,我们需要欧氏距离公式。
比方说,[(N(x)-data(x))^2 + (N(y)-data(y))^2 + (N(z)-data(z))^2]
如何查询包含到 select 我想要的行的欧氏距离公式?
只需使用 order by
和 limit
:
select t.*
from table t
order by power(x - 1, 2) + power(y - 2, 2) + power(z - 3, 2)
limit 1;
如评论中所述,您实际上不需要平方根,因为顺序相同。
顺便说一句,你可以把计算放在 select
这样你就可以 return 距离:
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;