我在使用 postGIS 的 postgreSQL 上有一个包含我国所有 37000 个城市的列,我试图将它们的 POINT(几何列)与 postgis 函数 ST_point(long,lat)放在一起。它们都有不同的经度和纬度数据。
这是我的要求:
update city
set geom_city = (select ST_SetSRID(ST_Point(city.city_long, city.city_lat),4326) from city);
问题是我有这个错误消息说:用作表达式 postgreSQL 的子查询返回多于一行
我在 stackoverflow 上发现我需要在请求的末尾添加“限制 1”,例如:
update city
set geom_city = (select ST_SetSRID(ST_Point(city.city_long, city.city_lat),4326) from city LIMIT 1);
这使我的请求有效,但确实在 geom_city 列中为所有城市写入了相同的结果。
有人知道吗?
最佳答案
不需要嵌套的 SELECT 子查询,试试这个:
update city
set geom_city = ST_SetSRID(ST_Point(city_long, city_lat),4326) ;
关于postgresql - 使用 postgis 在 postgreSQL 上请求错误(返回多行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35033741/