我是Postgresql的新手
我有表"admins_polygons“,其中列"_geometry”上有WKT值,我需要将该WKT转换为同一表中其他列上的几何值。
我已经创建了geometry列,但是当我尝试使用UPDATE来填充具有强制转换的行时,它给出了这个错误:
ERROR: more than one row returned by a subquery used as an expression
SQL state: 21000到目前为止,这是我的代码
SELECT AddGeometryColumn ('admins_polygons', 'polygons', 4326, 'POLYGON', 2)
SELECT admins_polygons._geometry
FROM admins_polygons
SELECT CAST (admins_polygons._geometry AS GEOMETRY)
FROM admins_polygons
UPDATE admins_polygons SET
polygons = (SELECT CAST (admins_polygons._geometry AS GEOMETRY)
FROM admins_polygons)发布于 2021-09-29 17:59:18
您需要进一步限定子查询,最好是使用唯一受约束的列,这样它就只返回一条记录。
值得庆幸的是,您已经使用这样一个键创建了它,即几何图形列的srid:
UPDATE admins_polygons SET
polygons =
(SELECT CAST(admins_polygons._geometry AS GEOMETRY)
FROM admins_polygons WHERE srid = 4326) WHERE srid = 4326 ;或者,等同地
UPDATE admins_polygons SET
polygons = CAST(admins_polygons._geometry AS GEOMETRY)
WHERE srid = 4326 ;这应该会产生您希望在SET赋值中使用的单行结果。
注如果您只希望更新这一条记录,则可能还需要包括最后一个WHERE条件。
https://stackoverflow.com/questions/69380661
复制相似问题