• ベストアンサー

UPDATE文のWHERE条件に他のテーブルのフィールドも入れたい

SQL文についてです。 表Aで列1と列2が'◎'のものについて、列3,列4,列5をそれぞれ'○','△','×'に更新したい場合は下記でOKだと思います。 UPDATE 表A SET 列3 = '○', 列4 = '△', 列5 = '×' WHERE 列1 = '◎' AND 列2 = '◎' 列1と列2をキーとして表Aと結合できる表Bが存在するとします。 条件に表Bの列6が'□'だった場合を追加したい時、どのような方法で行えば良いのでしょうか? 内部結合やWHERE EXISTSなどをいろいろ調べたのですが、SQL文に慣れていないためかうまくいきません。 初歩的な質問で申し訳ありませんが過去質問で参考になるものがなかったのでお願いします。

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

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

UPDATE 表A SET 列3 = '○', 列4 = '△', 列5 = '×' WHERE 列1 = '◎' AND 列2 = '◎' AND EXISTS ( SELECT 1 FROM 表B WHERE 表B.列1 = 表A.列1 AND 表B.列2 = 表A.列2 AND 表B.列6 = '□' ) じゃだめですか。

etegun
質問者

お礼

nora1962さんありがとうございます。 実際の処理は複雑条件であり私が初心者であることで検証に時間がかかりましたが教えていただいた通りの構文でうまくいきました! 大変ありがとうございました。

その他の回答 (1)

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.2

おまけです(内部結合の例) UPDATE 表A SET 列3 = '○', 列4 = '△', 列5 = '×' FROM 表A a INNER JOIN 表B b ON b.列1 = a.列1 AND b.列2 = a.列2 AND b.列6 = '□' WHERE a.列1 = '◎' AND a.列2 = '◎'

etegun
質問者

お礼

jamshid6さんありがとうございました。 お二方にやさしくアドバイスいただき感謝すると同時に、もっと自分で苦労して調べなくてはと実感しました。 今回は日限があったためじっくり調べる時間が取れず焦っておりました。←言い訳