大家好我在这里再次需要帮助 - 我这里有两张桌子,其中包含成千上万的记录。现在我们有一个主表,其架构如下:
ID |位置名称|标签|说明|经度|纬度
我们还有另一张桌子:
ID |位置名称|经度|纬度
问题是第一个表中的经度和纬度条目大多是错误的:( - 正确的信息在第二个表中。假设这些ID对应于两个表中的相同位置,我该如何修复查询,根据第二个表中ID相同的条目更新第一个表中每一行的经度和纬度字段...这里有任何想法 - 我在MySQL数据库...
编辑=====
注意:两个表分别有20 000和50 000行......
答案 0 :(得分:3)
使用MySQL 4.0+,你应该可以使用下面的INNER JOIN语法:
UPDATE
new_table
INNER JOIN
old_table ON (old_table.id = new_table.id)
SET
new_table.latitude = old_table.latitude,
new_table.longitude = old_table.longitude;
否则,您还应该能够执行以下操作:
UPDATE
new_table
SET
latitude = (SELECT latitude FROM old_table WHERE old_table.id = new_table.id),
longitude = (SELECT longitude FROM old_table WHERE old_table.id = new_table.id);
确保两个表中的ID列都具有唯一索引。如果它们被定义为主键,这就足够了。
答案 1 :(得分:2)
如果ID是主键/唯一索引,您可以使用REPLACE
REPLACE INTO bad_latlng (id,name,label,descr,lat,lng)
SELECT
b.id,b.name,b.label,b.descr,g.lat,g.lng
FROM
bad_latlng b JOIN good_latlng g ON(b.id = g.id)