如何让MySQL从第一个表中的第二个表中存储查询结果?

时间:2012-11-07 21:13:36

标签: mysql

我有一份商务中心清单。有时,数据输入人员没有所有信息,例如缺少城市名称,但其余信息已完成。我有另一个zipcodes表。我希望能够为那些没有城市的地址进行邮政编码查找,并获取城市名称。我在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表中找到城市名称并更新 中心表中缺少城市名称。感谢您的帮助,谢谢!

3 个答案:

答案 0 :(得分:1)

您可以使用多表update syntax

update centers 
  inner join zipcode_types on zipcode_types.zip = centers.zipcode
set centers.city = zipcode_types.primary_city
where centers.city='';

答案 1 :(得分:1)

尝试按如下方式重写更新语句:

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

在此SQL小提琴页面上显示:http://sqlfiddle.com/#!2/3f7b5/1

答案 2 :(得分:0)

试一试:

UPDATE centers SET city = (
SELECT primary_city
FROM zipcode_types 
WHERE zipcode=city.zip) 
WHERE city IS null 
OR city ==''';