地理选择查询

时间:2013-10-22 07:10:30

标签: sql sql-server geography sqlgeography

我有一个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

1 个答案:

答案 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