Mysql 在表之间复制数据时出现错误1062重复条目

Mysql 在表之间复制数据时出现错误1062重复条目,mysql,mysql-error-1062,Mysql,Mysql Error 1062,我正在尝试将数据从一个表复制到另一个表。T1、T2是两个表,它们都设置得适当,都有UQ的PK。特别是,我想将值R放入表中,该表结合了来自GZHTable3的数据。R是非唯一的,并且必须是T1.Aid=T2.Gid时的R,因此我有: INSERT INTO Combined_Data (R) SELECT T2.R FROM GZHTable3 as T2 JOIN Combined_Data as T1 ON T1.Aid = T2.Gid; Aid和Gid都是各自表格的

我正在尝试将数据从一个表复制到另一个表。T1、T2是两个表,它们都设置得适当,都有UQ的PK。特别是,我想将值R放入表中,该表结合了来自GZHTable3的数据。R是非唯一的,并且必须是T1.Aid=T2.Gid时的R,因此我有:

INSERT INTO Combined_Data (R)    
SELECT T2.R    
FROM GZHTable3 as T2   
JOIN Combined_Data as T1 ON T1.Aid = T2.Gid;
Aid和Gid都是各自表格的UQ和PK。就我所知,它是反对的,因为Aid和Gid都是PK

我不想只复制T2.R的值,但它必须在Aid、Gid上的两个表之间同步。为什么反对,解决办法是什么?(一些数据在表之间进行了复制,但R不是)

谢谢


澄清:

表1(T1)

表2(T2)

T1和T2的顺序不一样。对于T1中的每个Aid,我必须找到T2中Gid的对应值(例如UQid1),并将T2中该行R的(严格地)非零值复制到T1中的对应行中

T2的所有元素都是非空的,就目前而言,都是数字;T2比T1大得多


您的问题令人困惑,在最初的帖子中您尝试插入,但在编辑中您这样说:“对于T1中的每个辅助,我必须找到T2中Gid的对应值(例如UQid1),并将T2中该行R的(严格地)非零值复制到T1中的对应行中。”

如果后一种情况确实如此,您应该能够执行以下操作:

UPDATE table_1 AS t1 SET t1.value = (SELECT t2.value FROM table_2 AS t2 WHERE t2.UQid1 = t1.id);

我看到的一个危险信号是,您试图在同一主键值上连接T1和T2?这是怎么回事?T2应该通过sep列(T2.T1\u column\u id)引用T1,因为两个表中的PK应该是互斥的。
选择不同的T2.R
?抱歉,我不确定是否遵循。必须同步这两个表,才能使T2.R的值与T2.Gid的对应值正确。我们通过强加一个条件来同步,即UQ的PK匹配。当你说同步时,你指的是复制吗?@所有人都在主要问题中看到了澄清。我希望这会有所帮助。完全忽略最后的评论:-)。你是对的。应该已经更新了。我的术语确实把事情搞混了。到处道歉。谢谢你,迈克。
Gid     R        Different data fields....


UQid6   R6       ....... data ....
UQid12  R12      ....... data ....
UQid23  R23      ....... data ....
UQid1   R1       ....... data ....
UPDATE table_1 AS t1 SET t1.value = (SELECT t2.value FROM table_2 AS t2 WHERE t2.UQid1 = t1.id);