ako*_*e01 1 postgresql postgis
我有两个表table1和table2,它们都包含存储postgis几何的列.我想要做的是查看table2的任何行中存储的几何与几何上与存储在table1的任何行中的几何相交的位置,并使用交叉点的数量更新table1中的count列.因此,如果我在table1的第1行中有几何与table2中5行中存储的几何相交,我想在表1的单独列中存储5的计数.对我来说棘手的部分是我想同时为第1列的每一行执行此操作.
我有以下内容:
UPDATE circles SET intersectCount = intersectCount + 1 FROM rectangles
WHERE ST_INTERSECTS(cirlces.geom, rectangles.geom);
Run Code Online (Sandbox Code Playgroud)
......似乎没有用.我对postgres(或者一般的sql)并不太熟悉,我想知道我是否可以在一个语句中完成所有操作,或者我是否需要一些语句.我对如何使用多个语句(或使用for循环)执行此操作有一些想法,但我真的在寻找一个简洁的解决方案.任何帮助将非常感激.
谢谢!
就像是:
update t1 set ctr=helper.ctr
from (
select t1.id, count(*) as cnt
from t1, t2
where st_intersects(t1.col, t2.col)
group by t1.id
) helper
where helper.id=t1.id
Run Code Online (Sandbox Code Playgroud)
?
顺便说一句:您的版本不起作用,因为一行只能在一个更新语句中更新一次.