- ベストアンサー
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文に慣れていないためかうまくいきません。 初歩的な質問で申し訳ありませんが過去質問で参考になるものがなかったのでお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
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 = '□' ) じゃだめですか。
その他の回答 (1)
- jamshid6
- ベストアンサー率88% (591/669)
おまけです(内部結合の例) 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 = '◎'
お礼
jamshid6さんありがとうございました。 お二方にやさしくアドバイスいただき感謝すると同時に、もっと自分で苦労して調べなくてはと実感しました。 今回は日限があったためじっくり調べる時間が取れず焦っておりました。←言い訳
お礼
nora1962さんありがとうございます。 実際の処理は複雑条件であり私が初心者であることで検証に時間がかかりましたが教えていただいた通りの構文でうまくいきました! 大変ありがとうございました。