導入文
データベースを運用していると、 「特定の条件に合うデータだけまとめて更新したい」 という場面がよくあります。
そんな時に使うのが 条件付きUPDATEクエリ です。
この記事では、Access(SQL)で使える条件付きUPDATEの基本構文から、実務でよく使う具体例までを分かりやすく解説します。
■ 条件付きUPDATEとは?
条件付きUPDATEとは、
「WHERE句で条件を指定して、該当するレコードだけ更新するSQL文」
のことです。
例えば:
- 金額が1000円以上のデータだけ更新
- 今日以前の日付のデータだけフラグを立てる
- 特定のIDのレコードのみ修正
といった処理が可能になります。
■ 基本構文
UPDATE テーブル名
SET フィールド名 = 更新後の値
WHERE 条件;
■ シンプルな例
① 特定条件のレコードだけ更新
売上テーブルで、金額が1000円以上のものを「済」にする場合
UPDATE 売上
SET 状態 = “済”
WHERE 金額 >= 1000;
② 複数条件(AND / OR)
60歳以上かつ東京在住の顧客をゴールド会員にする
UPDATE 顧客
SET 会員区分 = “ゴールド”
WHERE 年齢 >= 60 AND 地域 = “東京”;
大阪または京都の顧客にフラグを立てる
UPDATE 顧客
SET フラグ = 1
SET フラグ = 1
WHERE 地域 = “大阪” OR 地域 = “京都”;
③ 他フィールドの値を使って更新
在庫数を1減らす
UPDATE 商品
SET 在庫数 = 在庫数 – 1
WHERE 商品ID = 10;
SET 在庫数 = 在庫数 – 1
WHERE 商品ID = 10;
■ 日付条件の例(Access用)
今日より前の日付のレコードを更新する
UPDATE 注文
SET ステータス = “期限切れ”
WHERE 注文日 < Date();
■ 実行前に必ずSELECTで確認する
UPDATE文は非常に強力な命令です。 WHERE句を間違えると、全件更新される危険があります。
必ず事前にSELECTで対象データを確認しましょう。
SELECT *
FROM 売上
WHERE 金額 >= 1000;
結果が正しければ、その条件をUPDATEに使います。
■ VBAから実行する場合
Access VBAで条件付きUPDATEを実行する例です。
CurrentDb.Execute _
“UPDATE 売上 SET 状態 = ‘済’ WHERE 金額 >= 1000;”, dbFailOnError
■ よくあるミス
❌ WHERE句を書き忘れる
UPDATE 売上
SET 状態 = “済”;
→ 全レコードが更新されます(非常に危険)
❌ 条件が広すぎる
意図しないレコードまで更新されることがあります。
■ 実務でよく使うパターン
- 配信日が今日以前 → 配信済 = True
- 金額が0 → 無効フラグ = True
- 未入力データ → 初期値を自動設定
- 月末締め処理で一括更新
- データを一括で正確に更新できる
- 手作業より安全で効率的
- SELECTで事前確認が重要
リンク
■ まとめ
条件付きUPDATEは、
という特徴があります。
Accessを業務で使うなら、必ず覚えておきたいSQL文のひとつです。
この記事が、AccessやSQLの運用に役立てば幸いです。