在同一张表上使用Postgis几何编写SQL查询

时间:2019-02-27 15:11:55

标签: sql postgresql postgis

我刚开始编写SQL查询,因此在此先感谢。我有一个名为geo_areas的postgres表。该表包含城市,城镇和州的列表。我有一列名为type的列,它指定它是城市还是城镇或州。我还有一个名为Geometry的列,其中包含上述名称的几何。看起来与此类似,

Name, Type, Geometry

Philadelphia, Town, XXXXXXXXXX
Pennsylvania, State, XXXXXXXXXXX
Pittsburgh, Town, XXXXXXXXXXX
Porsche, City, XXXXXXXXX

我需要编写一个查询,列出与此几何相似的所有其他名称。

Name, Type, Contains

Pennsylvania, State, [Porsche, Pittsburg, Philadelphia]
Porsche, City, [Philadelphia, Pittsburgh]
Philadelphia, Town, []
Pittsburgh, Town, []

感谢您朝正确方向迈出的任何帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

假设您希望将几何包含在可以尝试的状态下

select t2.* 
from  my_table t1  
inner join my_table t2 on st_dwithin(t1.geom,t2.geom, 0) 
and t1.type='State' 
and t2.type!='State' 

或用于st_contains

select t2.* 
from  my_table t1  
inner join my_table t2 on st_contains(t2.geom,t1.geom) 
and t1.type='State' 
and t2.type!='State'