2017-01-20 6 views
0

表の列は次のように構成:移入列が

経度、緯度、GID、ハッシュ

-78.885636、36.854、1、空

のPostgreSQL 9.4を使用し、列ハッシュを更新して、geohash関数の結果を得ようとしています。

列を更新するには、私が使用しています:

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になります。

+0

MY_TABLEのいずれかの主キーがありますか? – McNets

答えて

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 
); 
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