How to Fix: ERROR: missing FROM-clause entry for table "" in postgres

How to Fix: ERROR: missing FROM-clause entry for table "" in postgres

我已经看到很多关于此错误的问题。但似乎对我没有任何作用。 请分享您的建议。 这是我的查询,当两个 tables 的 geom 相交时,我试图从地理边界 table 更新 geonames tables 的 new_shp_id 列。

UPDATE 
    public.geonames
SET 
    new_shp_id = subquery.gbID
FROM 
    (
        SELECT gb.shapeid AS gbID
            FROM "public"."geoBoundaries" gb, "public"."geonames" gn
    ) AS subquery
WHERE 
    ST_Intersects(gn.geom, gb.geom);

错误:

ERROR: missing FROM-clause entry for table "gn"
LINE 11: ST_Intersects(gn.geom, gb.geom);

您不需要派生的 table。只需将地理边界直接放在 FROM 子句中,并为目标指定一个别名 table:

UPDATE public.geonames gn
  SET new_shp_id = gb.shapeid
FROM "public"."geoBoundaries" gb
WHERE ST_Intersects(gn.geom, gb.geom);