【发布时间】:2013-12-04 22:24:45
【问题描述】:
我正在尝试将数据从一个表复制到另一个表。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
【问题讨论】:
-
我看到的一个危险信号是您正试图在同一个主键值上加入 T1 和 T2?这是如何运作的? T2 应该通过 sep 列 (T2.t1_column_id) 引用 T1,因为两个表中的 PK 应该是互斥的。
-
SELECT DISTINCT T2.R? -
抱歉,我不确定我是否关注。为了使 T2.R 的值与 T2.Gid 的对应值正确,这两个表必须同步。我们通过强加作为 UQ 的 PK 匹配的条件进行同步。
-
当你说同步时,你指的是复制吗?
-
@ALL 请参阅主要问题中的说明。我希望这个对你有用。完全忽略最后一条评论:-)。