gpt4 book ai didi

postgresql - 一秒钟内根据多行更新一个表中的多行

转载 作者:行者123 更新时间:2023-11-29 12:34:16 25 4
gpt4 key购买 nike

我有两个表,table1 和 table2,它们都包含存储 postgis 几何的列。我想要做的是查看存储在 table2 的任何行中的几何与存储在 table1 的任何行中的几何相交的位置,并使用交叉数更新 table1 中的计数列。因此,如果我在 table1 的第 1 行中有一个几何图形与存储在 table2 中的 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

?

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

关于postgresql - 一秒钟内根据多行更新一个表中的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6602592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com