我目前有两个表,一个用于状态,并包含一个唯一的ID,状态名称和状态的坐标。第二个是城市区域,其中包含唯一的ID,城市区域名称和该区域的坐标。我试图找出哪些城市区域相互交叉,同时排除自交叉(意味着如果区域A与区域B相交,区域B与区域A相交,则只返回一个结果,而不是两者)
我目前有代码:
SELECT s.name
FROM urbanTable AS s, stateTable as a
WHERE ST_Intersects(s.coords, s.coords)
AND (a.gid != s.gid)
GROUP BY s.name;
然而,这并没有返回正确数量的结果。非常感谢任何和所有的帮助!谢谢!
答案 0 :(得分:3)
假设gid
是urbanTable
select
u1.name,
u2.name
from
urbanTable u1,
urbantable u2
where
u1.gid < u2.gid and -- avoid duplicating results
ST_Intersects(u1.coords, u2.coords)
答案 1 :(得分:0)
我认为您在测试ST_Intersects(s.coords, s.coords)
而不是ST_Intersects(s.coords, a.coords)