2016-03-25 12 views
1

は、これが私の状況です:SQL Serverの別のテーブルから別の列に基づいて新しい列を更新

ヒント:2つのテーブル上のCOLUMN(NUMBER_IDENTITY)が同じ値を持っていますが、これらの2台は、互いに関係がありません(これは私の選択は私の状況のた​​めです)

初期データベースの状態

  • I持っていたテーブルCONTRACTS(ID、NUMBER_IDENTITY、USER_ID)
  • I持っていたテーブルSUB_CONTRACTS(ID、NUMBER_IDENTITY)

NOW

は、私はテーブルCONTRACTS(ID、NUMBER_IDENTITY、USER_ID)

私はSUB_CONTRACTS(IDに新しい列を追加し、NUMBER_IDENTITYを持っています、USER_ID)

私の問題

CONTRACTSに存在する同じ値のSUB_CONTRACTSUSER_IDの列を更新する必要があります。 2つのテーブルのNUMBER_IDENTITY列が同じなので、私はこのアップデートを行うことができます。従ってSUB_CONTRACTCONTRACTの補完的なものです。

がどのように私の問題を解決するSQL Serverの機能、プロシージャまたはクエリを構築するための質問?この条件を満たす列をすべて同時に更新する関数を作成できますか?私は、ミニソリューションのクエリで解決することができますが、私はこのミニクエリに私の問題を解決するために参加することはできません。

+1

無料手が、簡単な更新+ a'la 'UPDATEの皮下SETに参加sc.user_id = c.user_id契約を登録しよSC sub_contracts FROM C ON sc.number_identity = c.number_identity'それを行う必要があります。質問はありますが、どうしてあなたはいつも契約書と同じであると思われる場合、余分な場所にユーザーIDを格納していますか? –

+0

@ JoachimIsaksson、なぜ私は異なるテーブルのsub_contractsのいくつかの情報を保持する必要がある –

答えて

3
update SUB_CONTRACTS 
set USER_ID = CONTRACTS.USER_ID 
from SUB_CONTRACTS 
inner join CONTRACTS on (SUB_CONTRACTS.NUMBER_IDENTITY = CONTRACTS.NUMBER_IDENTITY) 

この構文はSQL Serverでも機能します。 USER_IDの値はすべて、CONTRACTSUSER_IDの値と一致するように更新されます(NUMBER_IDENTITYの値は2つのテーブルで同じです)。

+0

それは動作します!あなたは私を助けてくれる!ありがとうございました! –

+0

あなたは大歓迎です:) – Seibar

関連する問題