2016-06-01 22 views
0

だから私は次の問題があります。私は2つのテーブル(ユーザー:100行とジオ - 郵便番号:450k行)を持っていて、郵便番号が記入されている場合は、私のユーザーテーブルを更新してlonとlatを表示したい。 NULLを表示します。これをどのように達成するのですか?既存のテーブルに(クエリの結果)を追加する

私はこれを、標準で提供されているMySQLワークベンチを使用してMySQLで行います。

+CURRENT SITUATION----+------+ 
| id | zipcode | lon | lat | 
+----+---------+------+------+ 
| 88 | 3531EK | NULL | NULL | 
| 89 | 5691JN | NULL | NULL | 
| 90 | 5701NR | NULL | NULL | 
| 91 | 3531EK | NULL | NULL | 
| 92 | 5691JN | NULL | NULL | 
| 93 | NULL | NULL | NULL | 
| 94 | NULL | NULL | NULL | 
| 95 | NULL | NULL | NULL | 
| 96 | NULL | NULL | NULL | 
| 97 | NULL | NULL | NULL | 
+----+---------+------+------+ 

+FUTURE SITUATION------------------+-----------------+ 
| id | zipcode | lat    | lon    | 
+-----+---------+------------------+-----------------+ 
| 583 | NULL | NULL    | NULL   | 
| 632 | NULL | NULL    | NULL   | 
| 797 | 4194WD | 51.8724978062918 | 5.2758839816285 | 
| 812 | 9723ZT | 53.2067353295688 | 6.5886266741127 | 
| 782 | 5617BD | 51.4471593854488 | 5.4566869544855 | 
| 799 | NULL | NULL    | NULL   | 
| 800 | 5623ET | 51.4618395108795 | 5.4733910341403 | 
| 179 | 5709BN | 51.4752182995384 | 5.7022349534995 | 
| 112 | 5701CN | 51.4759330063412 | 5.6780783810570 | 
| 90 | 5701NR | 51.4775509176254 | 5.6576320175919 | 
+-----+---------+------------------+-----------------+ 

答えて

0

MySQLでは、joinでこれを行うことができます。これが必要な理由

update users u join 
     zipcodes z 
     on u.zipcode = z.zipcode 
    set u.lat = z.lat, u.lon = z.lon; 

はしかし、私は表示されません。必要なときに郵便番号表を使って座標を調べるのはなぜですか?良い理由があるかもしれません - たとえば、他の座標源があるかもしれません。しかし、郵便番号が唯一の情報源であれば、同じ情報を2か所に格納する必要はありません。

+0

最近、ダッシュボードツールを使用してリアルタイムの洞察を得る際の精度を高めるため、郵便番号に孤独を追加し始めました。また、このデータベースのスケーラビリティのため、lonlatsをusersテーブルに追加するほうがパフォーマンスが向上します。ソリューションbtwに感謝します! – Adam

関連する問題