2016-06-01 2 views
0

У меня возникла следующая проблема. У меня есть 2 таблицы (пользователи: 100 строк и geo-zipcodes: 450k строк), и я хочу обновить таблицу моих пользователей, чтобы отобразить lon и lat, если zipcode заполнен. Когда он не заполнен, я хочу, чтобы 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 в zipcode пользователей, чтобы обеспечить лучшую точность при использовании инструментов панели инструментов для получения информации в реальном времени. И из-за того, насколько масштабируемая эта база данных должна быть, она имеет значение beter, чтобы просто добавить в lonlats таблицу users. Большое спасибо за решение btw! – Adam

Смежные вопросы