0

あるテーブルから別のテーブルにデータをコピーしようとしています。T1、T2 は両方とも適切に設定された 2 つのテーブルであり、両方とも UQ である PK を持っています。特に、値 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 です。私が見る限り、エイドもギドもPKなので反対です。

T2.R の値だけをコピーしようとしているわけではありませんが、Aid、Gid の 2 つのテーブル間で同期する必要があります。なぜ反対しているのか、解決策は何ですか?(一部のデータはテーブル間で複製されますが、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 のすべての要素は null ではなく、現在の目的では数値です。T2 は T1 よりはるかに大きい

4

1 に答える 1

0

あなたの質問は紛らわしいです。最初の投稿では挿入を試みていますが、編集では次のように述べています。 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 に答える