2016-06-01 34 views
0

所以我有以下問題。我有2個表格(用戶:100行和地理郵編:450k行),我想更新我的用戶表,以顯示郵政編碼填充時的lon和lat。當它沒有填寫時,我想要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; 

不過,我不明白爲什麼這是必要的。爲什麼不在需要時使用郵政編碼表查找座標?可能有很好的理由 - 例如,你可能有其他的座標來源。但是如果郵政編碼是唯一的來源,那麼就不需要在兩個地方存儲相同的信息。

+0

我們最近開始將lonlats添加到用戶郵政編碼,以確保在使用儀表板工具進行實時分析時獲得更高的精度。由於該數據庫的可擴展性要求高,因此只需在用戶表中添加lonlats就可以提高性能。順帶一提的感謝解決方案! – Adam