• ベストアンサー

SQLの書き方

T1(項目a&b) T2(項目c&d) というテーブルが存在しており、下記のような形でデータが存在しています。 T1 a | b ========== 1 | jj 2 | kk 3 | ll T2 c | d ========= 1 | a1 2 | a2 3 | a3 T1(a)とT2(c)で結合させて、b を d の値で書き換える場合は、どのように記述したら良いのかご教示下さい。 update T1 set b = 'ok' where a in ( select c from T2 where d = 'a2') というように、固定で項目を書き換える所までは出来たのですが、後一歩が上手くいきません。

質問者が選んだベストアンサー

  • ベストアンサー
  • riveron77
  • ベストアンサー率48% (180/370)
回答No.1

勘でw UPDATE T1 SET T1.b = (SELECT T2.d FROM T2 WHERE T1.a = T2.c) WHERE EXISTS (SELECT 1 FROM T2 WHERE T1.a = T2.c);

参考URL:
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=26&topic=18379
49ers
質問者

お礼

ありがとうございます。 色々試したのですが、ご回答頂いた方法では異常終了になるばかりで。 貼って頂いたURLを参考に、もう少し考えて見ます。m(__)m

その他の回答 (1)

回答No.2

RDBMSは、ここのカテゴリ通りSQL Serverですか? バージョンは? 自表を自己結合したり、他表を結合してのupdateは、RDBMSによる仕様差があります。 update t1 set b=y.d from t1 as x,t2 as y where x.a=y.c

49ers
質問者

お礼

どうも私の書き方が悪かったようですm(__)m じっくり記述しなおしたら出来ました。 >自表を自己結合したり、他表を結合してのupdateは、RDBMSによる仕様差があります。 そうなんですか。もっと勉強しないとダメですね。 ありがとうございました。

関連するQ&A