15

私は2つのテーブルを持っています。

表 1には、緯度/経度座標を使用して地理参照されている会社が含まれています。the_geom

Table2には、地理参照されていないTable1の同じ会社と、住所が地理参照されている他の何百もの会社も含まれています。

私がする必要があるのは、 Table1the_geomの会社の緯度/経度の値をTable 2の対応するエントリに挿入することだけです。これらの挿入の基になる共通点は列です。address

簡単な質問ですが、SQL はほとんど使用しません。

4

3 に答える 3

27

と仮定すると

「the_geom」緯度/経度値を挿入します

UPDATEあなたは実際に既存の行を意味しますtable2:

UPDATE table2 t2
SET    the_geom = t1.the_geom
FROM   table1 t1
WHERE  t2.address = t1.address
AND    t2.the_geom IS DISTINCT FROM t1.the_geom;  -- avoid empty updates

関連する回答:

addressまた、列にUNIQUE値があると仮定します。
詳細UPDATEはマニュアルをご覧ください。

于 2012-10-13T03:09:47.383 に答える
9

同様の問題がありましたが、上記の解決策を試したところ、次のようなエラーが発生しました

't2' 付近の構文が正しくありません

私のために働いたコードは次のとおりです。

UPDATE table2
SET the_geom = t1.the_geom
FROM table1 as t1
WHERE table2.address = t1.address AND table2.the_geom <> t1.the_geom

私の答えが5年遅れていることは知っていますが、この解決策を見つけることができなかった私のような人に役立つことを願っています.

于 2018-05-17T13:29:18.213 に答える
6

あなたが(私のような)mysqlユーザーで、上記のスクリプトが機能しない場合、これはmysqlの同等物です。

UPDATE table2 t2, table1 t1
SET    the_geom = t1.the_geom
WHERE  t2.address = t1.address
AND    t2.the_geom <> t1.the_geom; -- avoid empty updates

OPへのすべてのクレジット。

于 2013-05-10T09:18:50.940 に答える