postgresql - 使用 postgis 在 postgreSQL 上请求错误(返回多行)

标签 postgresql postgis

我在使用 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/

相关文章:

ruby-on-rails - RoR:从PostgreSQL迁移到Elastic

sql - 创建名称中包含当前日期的架构

postgresql - PostgreSQL 上 $libdir 的问题

postgresql - PostgisPG10Dialect 现在被 PostgreSQLDialect 取代了吗?

postgresql - Postgres Postgis 错误 : Library not loaded:/usr/local/lib/libspatialite. 5.dylib

sql - 无法在 bash 脚本中使用 postgresql 函数

sql - 计算Postgres中最近的工作日

sql - 是否有实现不可知的方式让 SQL DB 提供 UUID?

postgresql - 在编码 'WIN1252' 中具有字节序列 0x9d 的字符在编码 'UTF8' 中没有等效项

sql - PostGIS - 合并不同组中的缓冲区几何(相交时)