我是编写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, []
感谢所有对正确方向迈出的一步的帮助!
假设您希望包含在您可以尝试的状态中的几何体
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'