我想将所有行从一个表复制到另一个表,如果存在重复,则更改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'
答案 0 :(得分:0)
你需要的是
INSERT ...... ON DUPLICATE KEY UPDATE
另外,“如果有重复,则更改ID”似乎不够。您的表格具有client_id
,parent_id
,alias
,language
的复杂唯一键。
你的表都有一个条目,上面的字段设置为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
子句插入数据。