提问者:小点点

确定MySQL中所有元组之间的欧氏距离


假设我有一个有两列X和Y的表T,我想找到所有的元组对,其中使用每个元组X和Y计算它们的欧几里得距离的结果等于某个值D。

此外,这不能有重复。即两个元组的对(X,Y)和相同的两个元组的(Y,X)不能在结果中。

在没有给我答案的情况下,有没有人能够指导我用sql查询来回答这个问题?我已经绞尽脑汁几个小时了,我不知道该从哪里开始。


共1个答案

匿名用户

基本上,你想要一个交叉连接和算术。让我假设每一行都有一个唯一的ID。然后是这样的:

select t1.*, t2.*,
       <formula for Euclidean distance here>
from t t1 join
     t t2
     on t1.id < t2.id

如果没有唯一的id,可以改用元组比较:

on (t1.x, t1.y) < (t2.x, t2.y)