我有一个函数,根据两点的纬度和经度计算两点之间的距离:
my_function (lat_point1 NUMERIC, long_point1 NUMERIC, lat_point2 NUMERIC, long_point2 NUMERIC)
我想使用select
中的函数来计算我的point1(我总是相同)和我的point2之间的距离,它有多个值。
我有一个包含3列和多行的表。第一列是地图中点的名称,第二列是地点的纬度,第三列是经度。行有不同的点。
该函数有4个输入my_function(latutude_point1,longitude_point1,latutude_point2,longitude_point2)。
问题是我需要计算point1与所有其他点之间的距离。换句话说,我需要计算point1与point2,point1与point3,point1与point4,point1与point n 之间的距离。
如何在选择中调用该函数?
答案 0 :(得分:1)
您正在寻找cross join
:
select t1.*, t2.*,
my_function(t1.lat, t1.lng, t2.lat, lt2.lng)
from t t1 cross join
t t2;
您可能希望包含where t1.lat <> t2.lat and t1.lng <> t2.lng
以避免自我比较。