gpt4 book ai didi

sql - Postgresql 如何更新每行最大值的列?

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

所以我有一个表,我需要用名为 buffer 的表中的值升级列 highestprog

如果一个点与 2 个缓冲区相交,一个缓冲区为 80,另一个缓冲区为 90,则该列应更新为 90。

所以我认为这里应该使用 max 运算符。我的查询如下:

UPDATE test.tablea

SET highestprog = (SELECT max(b.progression) FROM test.tablea a, test.buffer b WHERE ST_Contains(b.geom, a.geom))

但是,这只是将整个表中的每一行都更新为 100,而不是每行的正确值。如何使用正确缓冲区中的正确值进行更新?

最佳答案

如果我对你的问题的理解正确,那么每点应该取最大值。假设表 tablea 包含一个“id 列”idx,可以按以下方式进行:

WITH stat AS (
SELECT a.idx, MAX(b.progression) AS maxprog
FROM
test.tablea a, test.buffer b
WHERE ST_Contains(b.geom, a.geom)
GROUP BY a.idx
)
UPDATE test.tablea
SET highestprog = stat.maxprog
FROM stat
WHERE test.tablea.idx = stat.idx

关于sql - Postgresql 如何更新每行最大值的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42677355/

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