SQL質疑応答スレ 9問目

このエントリーをはてなブックマークに追加
290NAME IS NULL
・DBMS名とバージョン
Microsoft SQL Server 2005

・テーブルデータ
tblA
pkey|value
----+-----
1  |a
2  |b

tblB
pkey|value
----+-----
1  |c

・欲しい結果
tblA
pkey|value
----+-----
1  |c
2  |b

・説明
両テーブルとも、pkeyが主キーです。
pkeyを条件に、tblAのvalueを、tblBのvalueで上書きしたいのですが、
どの様に書くのが一般的なのでしょうか。

UPDATE tblA
SET tblA.value = tblB.value
WHERE tblA.pkey = tblB.pkey
↑だと、「マルチパート識別子 "tblB.pkey" をバインドできませんでした。」
とエラーメッセージが出てしまいます。

UPDATE tblA
SET tblA.value = (SELECT MAX(tblB.value) FROM tblB WHERE tblA.pkey = tblB.pkey)
WHERE EXISTS
 ( SELECT *
  FROM tblB
   WHERE tblA.pkey = tblB.pkey
 )
↑とすると、ほしい結果は得られるのですが、
非常に複雑な書き方の様な気がします。