我有一个SQL Server 2012位置表,其中包含geo
类型的列geography
我有一个链接到位置表的用户表
位置
locationId int
geo geography
用户
userId int
locationId int
我将知道该位置的ID,我知道如何使用stdistance进行距离查询。但最好的方法是比较查询中的两个距离。我可以用subselect来做,但是有更好的方法
子选择看起来像
select
suburb, state, postcode,
geo.STDistance((select geo from location where locationId = 47))/1000 kms
from location
order by kms desc
答案 0 :(得分:1)
位置#47是否特别?会永远是47吗?无论哪种方式,您都可以将其粘贴在变量
中declare @HQ geography;
select @HQ = geo from location where locationid = 47;
select
suburb, state, postcode,
geo.STDistance(@HQ)/1000 kms
from location
order by kms desc
如果您(出于某种原因)在一个查询中想要所有内容,您可以尝试外部应用
select
suburb, state, postcode,
geo.STDistance(HQ.geo)/1000 kms
from location
outer apply (select geo from location where locationid = 47) as HQ
order by kms desc