0

我正在尝试将数据从一个表复制到另一个表。T1、T2 是两个设置适当的表,它们的 PK 都是 UQ。特别是我想将值 R 放入 GZHTable3 中的 Combined_Data 表中。R 是非唯一的,必须是当 T1.Aid = T2.Gid 时,所以我有:

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)

Aid     R       Data fields .....


UQid1   0      ........ data .........
UQid2   0      ........ data .........

表 2 (T2)

Gid     R        Different data fields....


UQid6   R6       ....... data ....
UQid12  R12      ....... data ....
UQid23  R23      ....... data ....
UQid1   R1       ....... data ....

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

T2 的所有元素都是非空的,并且出于目前的目的是数字;T2 远大于 T1

4

1 回答 1

0

您的问题令人困惑,在最初的帖子中您正在尝试插入,但在编辑中您说:“对于 T1 中的每个 Aid,我必须在 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);
于 2013-12-05T20:15:01.977 回答