2016-06-01 3 views
0

그래서 다음과 같은 문제가 있습니다. 2 테이블 (사용자 : 100 행 및 지리 - zipcodes : 450k 행) 및 zipcode 채워지면 경도 및 위도 표시하려면 내 사용자 테이블을 업데이트하려면. 내가 채워지지 않을 때 lon/lat 원하는 NULL을 표시하십시오. 이것을 어떻게 성취합니까?기존 테이블에 (쿼리 결과) 추가

MySQL Workbench에서 제공하는 표준을 사용하여 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를 users 테이블에 추가하는 것이 현명한 방법입니다. 솔루션 btw 주셔서 감사합니다! – Adam

관련 문제