我是Postgresql的新手
我有表" admins_多边形"这里有列"_geometry"它具有WKT值,我需要将该WKT转换为同一表中其他列的几何值。
我已经创建了几何列,但当我尝试使用UPDATE来填充行与CAST它给了我这个错误:
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)
您需要进一步限定子查询,最好使用唯一约束的列,这样它只返回一条记录。
值得庆幸的是,您已经用这样一个键创建了它,即几何列的网格:
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条件。