Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 从另一个表插入,然后按id链接表_Mysql_Insert - Fatal编程技术网

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

Mysql 从另一个表插入,然后按id链接表,mysql,insert,Mysql,Insert,我需要重构公司表,以便将地址信息移动到专用的地址表中 所以我想我需要这样做来创建新的地址记录 INSERT INTO address (city, country, ...) SELECT city,country, ... FROM company 但是,如何使用新创建的地址记录的id更新company表以保持引用完整性 有几个重复的地址,所以我不能只加入城市,国家等领域 更新 正如juergen d所提到的,我解决这个问题的方法是在地址表中创建一个临时的company_id列: ALTER

我需要重构公司表,以便将地址信息移动到专用的地址表中

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

INSERT INTO address (city, country, ...)
SELECT city,country, ... FROM company
但是,如何使用新创建的地址记录的id更新company表以保持引用完整性

有几个重复的地址,所以我不能只加入城市,国家等领域

更新

正如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;

您可以在
地址表中使用
公司id

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

然后,无需将任何
地址id
添加到
公司
表中。

您可以在
地址
表中使用
公司id

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

那么就不需要在
公司
表中添加任何
地址\u id

之后使用
选择LAST\u INSERT\u id()
获取新记录的id将持续\u INSERT\u id(),而不只是给我语句插入的最后一条记录的id,不管插入了多少条记录?是,我误解了你的问题。之后,使用
选择LAST\u INSERT\u ID()
获取新记录的ID将LAST\u INSERT\u ID()不仅提供语句插入的最后一条记录的ID,无论插入了多少条记录?是,我误解了你的问题。我的数据库设计更适合作为关系拥有方的公司。但是我可以做的是临时创建company\u id列,按照您的建议进行插入,然后在删除company\u id列之前使用company\u id列更新company表。请参阅我的更新。我的数据库设计更适合作为关系拥有方的公司。但是我可以做的是临时创建company\u id列,按照您的建议进行插入,然后在删除company\u id列之前使用company\u id列更新company表。查看我的更新。
INSERT INTO address (company_id, city, country, ...)
SELECT id, city, country, ... 
FROM company