1

我有一个名为 Person 的 MySql 表,有一天我不小心从该表中删除了某人。我有一个名为 PersonBak 的备份表,所以我打算从备份中恢复我的删除。但是,在推进我的应用程序的过程中,我重命名了 Person 中的所有字段,除了主键 PersonID。现在 Person 和 PersonBak 有相同的数据,但只有一个匹配的列名。

有什么方法可以在不做大量工作的情况下将我的失踪人员从 PersonBak 恢复为 Person?我有很多专栏。当然我现在可以做这项工作,但我可以想象这会再次出现。

有没有办法告诉MySql这些真的是同一张表,列的顺序相同,只是列名不同?或者在不写出 PersonBak 中的哪些列与 Person 中的哪些列相匹配的情况下,有什么方法可以做到这一点?

4

3 回答 3

1

如果表之间的列数据类型相同,列数相同,并且它们的顺序相同,那么 MySQL 将为您完成所有工作:

INSERT INTO t1 SELECT * FROM t2;

列名被忽略。服务器仅使用序号位置来决定如何排列从/到列。

于 2013-10-26T06:11:43.100 回答
1

那这个呢:

insert into Person(id, col11, col12) (select id, col21, col22 from personBak where id=5)


人物架构:

columns (id, col11, col12)


personBak 架构:

columns (id, col21, col22)

于 2013-10-26T04:28:49.177 回答
0

查看Mysql SELECT INTO,您可以指定字段名称并创建插入语句

于 2013-10-26T04:15:36.407 回答