将整个表复制到另一个表并更改ID

时间:2014-07-28 03:10:54

标签: mysql database phpmyadmin

我想将所有行从一个表复制到另一个表,如果存在重复,则更改ID。

我使用phpmyadmin并尝试了操作选项卡。

将表复制到(database.table): 仅限数据 添加自动增量

这是它给我的SQL:

INSERT INTO `wsuca2_dbwsuca2`.`cxtb4_menu` SELECT * FROM `wsuca2_dbwsuca2`.`j25_menu`

这是我得到的错误:

  

#1062 - 重复录入&0; 0-0-root - *'对于密钥< idx_client_id_parent_id_alias_language'

2 个答案:

答案 0 :(得分:0)

你需要的是

INSERT ...... ON DUPLICATE KEY UPDATE

另外,“如果有重复,则更改ID”似乎不够。您的表格具有client_idparent_idaliaslanguage的复杂唯一键。 你的表都有一个条目,上面的字段设置为0-0-root- *所以它会抛出一个错误,因为MySQL不知道如何处理它。

  • 在复制之前手动更新这些条目

  • 使用INSERT ...... ON DUPLICATE KEY UPDATE指定找到后如何更新这些条目。

  • 使用INSERT IGNORE忽略所有重复的条目(可能不是您想要的)

答案 1 :(得分:0)

具有重复键错误是明确的通知,即您没有在两个表中使用相同的结构和键。首先重新创建结构:

DROP TABLE `wsuca2_dbwsuca2`.`cxtb4_menu`;
SHOW CREATE TABLE `wsuca2_dbwsuca2`.`j25_menu`; //old table structure

并将j25_menu的结构粘贴为结构od cxtb4_menu(更改表的名称)。之后,使用INSERT子句插入数据。