0

我有一份商务中心的清单。有时数据录入的人并没有丢失城市名称等所有信息,但其余信息却是完整的。我有另一张邮政编码表。我希望能够对那些没有城市的地址进行邮政编码查找,并获得城市名称。我在 MySQL 中这样做。

我很难获得正确的 MySQL。不知道是语法问题还是MySQL的逻辑不对。这就是我所拥有的:

update centers city
set centers.city = (
select zipcode_types.primary_city
from centers, zipcode_types 
where centers.city="" and centers.zipcode=zip);

这是我从上面的 MySQL 得到的错误:

ERROR 1093 (HY000): You can't specify target table 'city' for update in FROM clause

我正在尝试做的是从 zipcode_types 表中找到城市名称并更新中心表中缺少的城市名称。感谢您的帮助,谢谢!

4

3 回答 3

1

您可以使用多表更新语法

update centers 
  inner join zipcode_types on zipcode_types.zip = centers.zipcode
set centers.city = zipcode_types.primary_city
where centers.city='';
于 2012-11-07T21:21:34.783 回答
1

尝试如下重写您的更新语句:

update centers set city=(select zipcode_types.primary_city from zipcode_types where enters.zipcode=zipcode_types.zip)
where centers.city=''

如此 SQL Fiddle 页面所示:http ://sqlfiddle.com/#!2/3f7b5/1

于 2012-11-07T21:40:01.907 回答
0

试一试:

UPDATE centers SET city = (
SELECT primary_city
FROM zipcode_types 
WHERE zipcode=city.zip) 
WHERE city IS null 
OR city ==''';
于 2012-11-07T21:40:09.833 回答