私は2つのテーブルを持っています。
Table1the_geom
という列に緯度/経度座標で地理参照されている会社が含まれています
Table2には、地理参照されていないTable1の同じ会社と、住所が地理参照されている他の何百もの会社も含まれています。
私がする必要があるのは、表1企業のthe_geom
lat/lng値を表2の対応するエントリに挿入することだけです。これらの挿入の基礎となる一般的な分母は、address
列です。
簡単な質問ですが、SQLを使用することはめったにありません。
それを仮定して
「the_geom」緯度/経度値を挿入します
実際には、table2の既存の行をupdateすることを意味します。
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
に関する詳細 ここ 。
あなたが(私のような)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へのすべてのクレジット。
同様の問題が発生しましたが、上記の解決策を試したところ、次のようなエラーが発生しました
'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年遅れていることは知っていますが、これがこの解決策を見つけることができなかった私のような誰かに役立つことを願っています。