0

我有一个 SQL Server 2012 位置表,其中有一列geo类型geography

我有一个链接到位置表的用户表

地点

locationId int
geo geography

用户

userId int
locationId int

我会知道该位置的 ID,并且我知道如何使用 stdistance 进行距离查询。但是,在查询中比较两个距离的最佳方法是什么。我可以使用子选择来做到这一点,但有没有更好的方法

子选择看起来像

select 
   suburb, state, postcode, 
   geo.STDistance((select geo from location where locationId = 47))/1000 kms
from location
order by kms desc
4

1 回答 1

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
于 2013-10-22T10:08:56.653 回答