在 Postgresql 中用查询结果填充列
Populate column with query results in Postgresql
Table 列的结构如下:
经度、纬度、gid、哈希
-78.885636, 36.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。
要使用计算值更新 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
这对我有用:
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
);
Table 列的结构如下:
经度、纬度、gid、哈希
-78.885636, 36.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。
要使用计算值更新 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
这对我有用:
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
);