从另一个表插入,然后按ID链接表

时间:2016-07-14 15:29:32

标签: mysql insert

我需要重构一个Company表,以便将地址信息移动到专用的Address表中。

所以我想我需要做这样的事情来创建新的地址记录。

INSERT INTO address (city, country, ...)
SELECT city,country, ... FROM company

但是如何使用新创建的地址记录的id更新公司表以保持参照完整性?

有几个重复的地址,所以我不能加入城市,国家/地区等。

更新

正如juergen d所提到的,我解决这个问题的方法是在地址表中创建一个临时的company_id列:

ALTER TABLE address ADD company_id INTEGER

INSERT INTO address (city,country,company_id)
SELECT city,country,id from company

UPDATE company c set c.address_id = (select a.id from address a where a.company_id = c.id)

ALTER TABLE address DROP COLUMN company_id;

1 个答案:

答案 0 :(得分:0)

您可以在company_id表中使用address

INSERT INTO address (company_id, city, country, ...)
SELECT id, city, country, ... 
FROM company

然后,无需向address_id表添加任何company