所以我有以下问题。我有 2 个表(用户:100 行和地理邮政编码:450k 行),我想更新我的用户表以显示 lon 和 lat(如果邮政编码已填写)。当未填写时,我希望 lon/lat 为显示空值。我如何实现这一目标?
我使用标准提供的 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 |
+-----+---------+------------------+-----------------+
最佳答案
在 MySQL 中,您可以通过 join
来完成此操作:
update users u join
zipcodes z
on u.zipcode = z.zipcode
set u.lat = z.lat, u.lon = z.lon;
但是,我不明白为什么这是必要的。为什么不在需要时使用邮政编码表查找坐标呢?可能有充分的理由——例如,您可能有其他坐标源。但如果邮政编码是唯一来源,则无需在两个地方存储相同的信息。
关于mysql - 添加(查询结果)到现有表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37567505/