ここから本文です

MSSQLで他のテーブルを参照して更新

function_glmさん

2011/6/1816:30:52

MSSQLで他のテーブルを参照して更新

MSSQL2005で、次のような2つのテーブルを想定します。
key1とkey2でプライマリーキーです。

table1.
key1 key2 field
1 2 data1
1 3 data2
2 2 data3

table2.
key1 key2 field
1 2 data1_update
2 2 data3_update

テーブル2を参照してテーブル1をupdateして次のような結果を得たい状況です
結果
key1 key2 field
1 2 data1_update
1 3 data2
2 2 data3_update

この操作をするのに、次のようなクエリを書いてみました。
update
table1
set
field=table2.field
from
table2
where
table1.key1=table2.key1 and table1.key2=table2.key2

この結果、

サブクエリは複数の値を返しました。サブクエリが =、!=、<、<=、>、>= の後に続く場合や、サブクエリが 1 つの式として使われる場合は複数の値は許可されません。

というエラーメッセージが返り、クエリが実行されないという状態です。
一体、何が悪いのか探しあぐねている状態です。
何か気がつく点があれば、御指摘願えれば幸いです。

閲覧数:
711
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

nora1962jpさん

2011/6/1900:14:45

update table1 inner join table2
on `table1`.key1=`table2`.key1
and `table1`.key2=`table2`.key2
set table1.`field`=table2.`field`

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。