使用 Select 传入父变量的 Postgres 更新

Postgres Update Using Select Passing In Parent Variable

我需要使用 array_agg 和空间查找的结果更新我的 Postgres table 中的几千行。

查询需要获取父项 table 的几何图形,以及 return 另一个 table 中匹配行 ID 的数组。它可能 return 没有 ID 或可能有 2-3 个 ID。

我尝试使用 UPDATE FROM,但我似乎无法将 SELECT 的父 table geom 列传递到子查询中。我看不到在 2 table 之间进行 JOIN 的任何方式。

这是我目前拥有的:

UPDATE lrc_wales_data.records
SET lrc_array = subquery.lrc_array

FROM (
    SELECT array_agg(wales_lrcs.gid) AS lrc_array 
    FROM layers.wales_lrcs 
    WHERE st_dwithin(records.geom_poly, wales_lrcs.geom, 0)
) AS subquery

WHERE records.lrc = 'nrw';

我得到的错误是:

ERROR:  invalid reference to FROM-clause entry for table "records"
LINE 7: WHERE st_dwithin(records.geom_poly, wales_lrcs.geom, 0)

这可能吗?

非常感谢, 史蒂夫

意识到不需要使用 SET FROM。我可以直接在 SET 中使用子查询:

UPDATE lrc_wales_data.records
SET lrc_array = (
    SELECT array_agg(wales_lrcs.gid) AS lrc 
    FROM layers.wales_lrcs 
    WHERE st_dwithin(records.geom_poly, wales_lrcs.geom, 0)
)

WHERE records.lrc = 'nrw';