我需要規範化我的表。所以我做了一個我執行的腳本(sql)。 我想將表A(舊)中的所有現有客戶插入表B(新)。MySQL表通過普通的sql錯誤規範化
很簡單,就是用
INSERT INTO `A` SELECT * FROM `B`;
做,但我想設置一些外鍵值。表A
中有city
字段,但表B
中有city_id
字段。我認爲是這樣的:
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')
在這一點,我才擺烏龍
請顯示錶格的模式。 – Barmar 2013-04-22 23:01:52
簡化(因爲其他的東西並不重要): A {id,name,city} B {id,name,city_id} cities {id,name} – 2013-04-22 23:14:19