16

onetable のデータを使用してテーブルを更新する必要がありますtwo。表 1 と 2 は、共通の列によって関連付けられていません。テーブルthreeは テーブル に関連付けられていますtwo

例:テーブル1(reg_detテーブル)

reg_det_id | reg_id | results
101        | 11     | 344

テーブル 2 :(一時テーブル)

venue                    | results
Anheim convention center | 355

表 3 (regmaster-tbl)

reg_id| venue
11    | Anaheim convention center

テーブル 2 のデータを使用して、テーブル 1 の結果列を更新する必要があります。しかし、表 1 と 2 は関連していません。上記のように、表 2 と 3 および表 1 と 3 は関連しています。誰でもアイデアを提案できますか?表 1 の結果の値を 355 にする必要があり、このデータは表 2 からのものですが、これら 2 つは無関係であり、表 3 を使用して関連付けることができます。紛らわしくてすみません!

4

3 に答える 3

16

かなり簡単です:

UPDATE T1
SET result = t2.results
FROM [table one] T1
INNER JOIN [table three] t3
 on t1.reg_id = t3.reg_id
INNER JOIN [table two] T2
 on t2.venue = t3.venue
于 2013-05-16T20:22:25.777 に答える
7

答えではなく、ほとんど質問です。:)

暗黙の内部結合を使用できませんでしたか?

UPDATE rd
   SET rd.results = tt.results
  FROM reg_det rd, regmaster rm, temptable tt
 WHERE rm.reg_id = rd.reg_id
   AND rm.venue = tt.venue;

読みやすく、この構文はSELECTステートメント内で機能し、明示的な内部結合と同じ意味を持ちます。

于 2015-12-02T22:18:19.370 に答える
1

これを試して:

UPDATE rd
SET rd.results = t.results
FROM reg_det rd
JOIN regmaster rm ON rm.reg_id = rd.reg_id
JOIN temptable t ON t.venue = rm.venue
WHERE t.results = 355

そうしないと、regmaster と temptable に一致するすべての reg_det レコードが更新されるため、WHERE 句を追加しました。

于 2013-05-16T20:21:09.723 に答える