Postgresql 基于第二个表中的多行更新一个表中的多行

Postgresql 基于第二个表中的多行更新一个表中的多行,postgresql,postgis,Postgresql,Postgis,我有两个表,表1和表2,它们都包含存储postgis几何图形的列。我想做的是查看存储在表2任意一行中的几何体与存储在表1任意一行中的几何体在何处相交,并用相交数更新表1中的计数列。因此,如果我在表1的第1行中有一个几何体与表2中存储在5行中的几何体相交,我想在表1的一个单独列中存储一个5的计数。对我来说,棘手的部分是我想同时对第1列的每一行执行此操作 我有以下资料: UPDATE circles SET intersectCount = intersectCount + 1 FROM recta

我有两个表,表1和表2,它们都包含存储postgis几何图形的列。我想做的是查看存储在表2任意一行中的几何体与存储在表1任意一行中的几何体在何处相交,并用相交数更新表1中的计数列。因此,如果我在表1的第1行中有一个几何体与表2中存储在5行中的几何体相交,我想在表1的一个单独列中存储一个5的计数。对我来说,棘手的部分是我想同时对第1列的每一行执行此操作

我有以下资料:

UPDATE circles SET intersectCount = intersectCount + 1 FROM rectangles 
WHERE ST_INTERSECTS(cirlces.geom, rectangles.geom);
…这似乎不起作用。一般来说,我对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
?

顺便说一句:您的版本不起作用,因为一行在一个update语句中只能更新一次。

类似于:

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
?


顺便说一句:您的版本不起作用,因为一行在一个更新语句中只能更新一次。

请发布最终SQL,您正在发布生成它的代码,顺便说一句,这不会添加任何内容,也会增加阅读难度。请发布最终SQL,顺便说一句,您正在发布生成代码的代码,这不会增加任何内容,也会增加阅读难度。