Mysql 如何迁移递归表?

Mysql 如何迁移递归表?,mysql,Mysql,假设我有一个表,category,它有3列,id,parent\u id和name 我有几个这样的表,我想把它们合并成一个。目前,它们的ID将发生冲突(在DBs中不是唯一的),因此我需要重新为它们标识ID。如果我将id设置为auto\u increment,我可以很好地复制所有其他列,但是parent\u id将无法再正确链接。有没有什么神奇的方法可以让家长id指向正确的新id 寻找类似于 INSERT INTO newtable (parent_id, name) SELECT ???, na

假设我有一个表,
category
,它有3列,
id
parent\u id
name

我有几个这样的表,我想把它们合并成一个。目前,它们的ID将发生冲突(在DBs中不是唯一的),因此我需要重新为它们标识ID。如果我将
id
设置为
auto\u increment
,我可以很好地复制所有其他列,但是
parent\u id
将无法再正确链接。有没有什么神奇的方法可以让
家长id
指向正确的新id

寻找类似于

INSERT INTO newtable (parent_id, name) SELECT ???, name FROM oldtable
怎么样

  • 生成一个新表,其列包含旧表的名称、旧id(oldid、oldtablename)以及新id
  • 添加新列“newparentid”
  • 将每行的newparentid更新为(
    从newtable nt中选择newid,其中oldtablename=row.oldtablename和nt.oldid=row.parent\u id

我想您可以添加一个旧的id列,这样您仍然可以使用原始id,并且可以对表进行连续更新,以修改所有父id以指向新的auto inc id。显然,您必须首先删除表上的所有外键要求,并在所有更改完成后重新设置它们–

我想您可以添加一个旧的id列,这样您仍然可以使用原始id,并且您可以对表进行连续更新,以修改所有的
父id
以指向新的auto\u inc身份证。显然,您必须首先删除表上的所有外键要求,并在所有更改完成后重新设置它们。我认为,您必须添加另一个包含旧id和新id的表_id@Patrick:啊,我想我可能不得不这么做@雷内:我觉得多用一列要比多用一整张表容易。