我有一个数百万记录的数据库(我国的所有房屋)。现在我想选择所有有相邻记录的记录(附有房子的记录),并给它一个状态' T'。每条记录都有一个几何列,如下所示:
POLYGON(( 254059.737 593504.637 0.0, 254059.227 593500.0 0.0, 254059.216 593499.899 0.0, 254058.242 593500.0 0.0, 254057.914 593500.034 0.0, 254057.893 593500.0 0.0, 254057.807 593499.863 0.0, 254052.074 593490.692 0.0, 254052.182 593490.639 0.0, 254058.138 593490.002 0.0, 254057.932 593488.165 0.0, 254074.487 593486.413 0.0, 254075.981 593500.0 0.0, 254076.265 593502.583 0.0, 254076.561 593502.55 0.0, 254076.594 593502.847 0.0, 254059.737 593504.637 0.0))
是否有可能使用sql语句执行此操作?我从未使用SQL,所以我是一个完整的新手。详细解释是优选的。
我开始时:
SELECT id, geometry, 'T'::text as type
FROM houses
WHERE
我想我必须在WHERE
子句中添加一些交叉函数?
答案 0 :(得分:0)
所以,我做这样的事情:
SELECT DISTINCT
h1.id,
'T'::text as type
FROM
houses h1,
houses h2
WHERE
h1.id <> h2.id and
ST_Intersects(h1.geometry, h2.geometry)