假设我有一张这样的表
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(x)-data(x))^2 + (N(y)-data(y))^2 + (N(z)-data(z))^2]
如何查询包含欧几里德距离公式以选择我想要的行?
答案 0 :(得分:1)
只需使用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
中,这样您就可以返回距离:
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;