Microsoft Access 掲示板

SQLクエリでの複雑な条件のUpdate文

3 コメント
views

初歩的な質問かも知れませんが、ぜひアドバイスを頂きたいです。
Update文を作りたいのですが全然うまくいきません
テーブルABC・・Key1,Key2,Key3,Key4,Col5,Col6,Col7
フラグの値を変えたいだけなのですが、ただ1つ2つの条件でフラグを変えるのではなくて
副問い合わせなどを使ってかなり複雑な条件に該当するデータのフラグだけを変えたいと思っています。

Update ABC
SET Col6 = False
Where (Select abc.Key1,abc.Key2,abc.Key3,abc.Key4 From ABC,(さらに別ABCの副問い合わせの表)ABC2
Where 副問い合わせを含む複雑な条件)

Select文としては文法の間違いはなく、これで8000くらいのデータを引っ張って来てくれますがUpdate文に入れ込むと上手く動いてくれません
サイトでSelectを使用したUpdate文を探しましたが、どれもこれもキーが1つしかないような簡素なSelect文で参考にならないです。
Keyが複数あり、副問い合わせもある複雑な条件のUpdate文は上手く作ることができるでしょうか?ぜひご助言お願いいたします。

かるみっくえーす
作成: 2026/03/07 (土) 01:35:26
通報 ...
1
hatena 2026/03/07 (土) 12:06:18 修正

Select文としては文法の間違いはなく、これで8000くらいのデータを引っ張って来てくれますがUpdate文に入れ込むと上手く動いてくれません

Update文のwhere句にはSelect文ではなくwhere条件式をかくのだか?

とりあえず、いきなりUpdate文を書くのではなく更新対象を抽出するSelect文を作成してそれを開いてみて希望のデータが抽出されていることを確認する。
それをクエリとして保存して、そのクエリのデザインビューで更新クエリに変換すれば簡単だと思います。

2
かるみっくえーす 2026/03/07 (土) 12:53:13 a823b@9fb5a

hatenaさんありがとう御座います。
普段SQLServerやらOracleやらを使用していて、Accessはあまり触ったことがないのでフルSQLクエリで何とかしていまして、今回もクエリでどうにかできると思って様々な機能をあまり知らずに使っていませんでした。
クエリとして保存したらデザインビューで更新クエリに変換する機能があるのですね。そこで変換したら更新SQLクエリを自動で作ってくれて動作する感じでしょうか。
調べてやってみたいと思います。お手数おかけしました。

3
かるみっくえーす 2026/03/10 (火) 13:05:28 a823b@9fb5a

hatenaさん
昨日行いましたが結果としてうまい事行きませんでした。
Select文をクエリとして保存し、更新クエリに変えてやってみましたが更新しようとするフラグ「Col6が重複しています」となり条件に沿ったフラグを変えることができませんでした。
おそらくですが副問い合わせである自身のテーブルとごっちゃになっているんだと思いますが、サブクエリの中のフラグの名前をAs Col6sなどとしてCol6、Col6sを共に変えたかったのですが今度は「Col6sが重複しています」となり変換ができませんでした。(名前変えているので唯一だと思ったのですが・・)Select文ではっきり出てるので確定できるかと思ったんですが何が悪かったのか分からずじまいです。
結局昨日はらちが明かずで以前のバックアップ状態に戻してエラーのあるプログラムを使わないようにする方法で暫定措置としました。私の実欲不足で本当に申し訳ないです。改めてありがとう御座いました。
もっとSQLを勉強しないといけないですね。。