表格列结构如下:
经度,纬度,gid,哈希
-78.885636,66.854,1,空
使用PostgreSQL 9.4并尝试使用geohash函数的结果更新列 Hash :
SELECT ST_GeoHash(ST_SetSRID(ST_MakePoint(longitude::float, latitude::float), 4326))
FROM my_table;
要更新列,我正在使用:
UPDATE my_table SET Hash = (SELECT ST_GeoHash(ST_SetSRID(ST_MakePoint(longitude::float, latitude::float), 4326))
FROM my_table);
但是我收到了一个错误:
ERROR: more than one row returned by a subquery used as an expression.
我是新手,所以我可能会问一个乏味的问题。任何帮助,将不胜感激。现在我将成为RTFM-ing。
答案 0 :(得分:0)
要使用计算值更新Hash
列,您需要使用此查询,其中gid
是主键(可能需要更改它)。
UPDATE my_table
SET Hash = my_table_2.geo_hash
FROM
(SELECT gid,
ST_GeoHash(ST_SetSRID(ST_MakePoint(longitude::float, latitude::float), 4326)) as geo_hash
FROM my_table) as my_table_2
WHERE my_table.gid = my_table_2.gid
答案 1 :(得分:0)
这对我有用:
UPDATE my_table SET "Hash" = (
SELECT ST_GeoHash(ST_SetSRID(ST_MakePoint(longitude::float, latitude::float), 4326))
FROM my_table p
WHERE my_table.gid = p.gid
);