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テーブルから都市名を見つけて、centersテーブルで欠落している都市名を更新することです。私は助けに感謝します、ありがとう!

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フィドルページに示されているように: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 に答える