假设我有一个有两列X和Y的表T,我想找到所有的元组对,其中使用每个元组X和Y计算它们的欧几里得距离的结果等于某个值D。
此外,这不能有重复。即两个元组的对(X,Y)和相同的两个元组的(Y,X)不能在结果中。
在没有给我答案的情况下,有没有人能够指导我用sql查询来回答这个问题?我已经绞尽脑汁几个小时了,我不知道该从哪里开始。
基本上,你想要一个交叉连接和算术。让我假设每一行都有一个唯一的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)