テーブルを正規化する必要があります。そこで、実行するスクリプト (sql) を作成しました。既存のすべてのクライアントをテーブル A (古い) からテーブル B (新しい) に INSERT したいと考えています。
それは単にで行われます
INSERT INTO `A` SELECT * FROM `B`;
しかし、いくつかの外部キー値を設定したいです。テーブルにはcity
フィールドがありますが、テーブルにA
はcity_id
フィールドがありますB
。私は次のようなことを考えました:
INSERT INTO `A` (`id`, `name`, `city_id`)
SELECT `id`, `name` FROM `B`,
(SELECT `cities`.`id` FROM `cities` WHERE `cities`.`name` = (SELECT `city` FROM `A` WHERE `A`.`id` = `B`.`id`)) `temp_cities`;
残念ながら、これは機能しませんB
。id
設定されていません:-(エラーは次のとおりです:
Error (1054): Unknown column 'B.id' in 'where clause')
どの時点で私は何かを台無しにしましたか?