Access更新クエリの使い方と他テーブルからの更新

概要

この記事の結論
更新クエリは、条件に一致する既存レコードのフィールドを一括変更する機能です。新しい行を増やす追加クエリとは異なります。実行後に通常の取り消しで戻せるとは限らないため、バックアップと更新前の対象確認を先に行います。

この記事でわかること

  • 選択クエリで対象を先に確認する
  • 固定値を一括更新する
  • 別テーブルから値を更新する
  • 更新できない原因を確認する

この記事の主な内容

  1. 更新クエリは既存の値を書き換える
  2. 選択クエリで対象を先に確認する
  3. 固定値を一括更新する
  4. 別テーブルから値を更新する
  5. 更新できない原因を確認する
  6. 実行記録と復元手順を残す
  7. よくある質問

想定読了時間:約8分


1 更新クエリは既存の値を書き換える

更新クエリは、条件に一致する既存レコードのフィールドを一括変更する機能です。
新しい行を増やす追加クエリとは異なります。
実行後に通常の取り消しで戻せるとは限らないため、バックアップと更新前の対象確認を先に行います。

別テーブルの値を使う更新もできますが、更新元が同じキーで複数行あると結果の判断が難しくなります。
結合元を一意にすることが重要です。

更新と追加の違いについて、更新、追加の関係を示す図。

2 選択クエリで対象を先に確認する

商品マスターのカテゴリが文具の行だけ、取扱中をYesにする例で進めます。
最初に選択クエリを作り、商品ID、カテゴリ、取扱中を表示します。
対象のIDと件数を記録してからクエリの種類を変更します。

操作手順

1. 対象ファイルと実データの保存先をバックアップします。

2. T_商品から商品ID、カテゴリ、取扱中を表示します。

3. カテゴリの条件を “文具” にします。

4. 選択結果が更新したい行だけであることを確認します。

5. クエリを別名で保存し、更新クエリへ変更します。

実行前の確認手順について、保全、抽出、照合の関係を示す図。

3 固定値を一括更新する

更新クエリへ切り替えると「レコードの更新」行が現れます。
取扱中の更新値を True にし、カテゴリの条件を残します。SQLではSETが新しい値、WHEREが対象を表します。

更新SQLの役割について、UPDATE、SET、WHEREの関係を示す図。

WHEREを外すと全件が更新対象になります。
実行の確認件数が予定と違う場合は中止し、保存済みの選択クエリに戻って条件を確認してください。

サンプルコードと式

UPDATE [T_商品]
SET [取扱中]=True
WHERE [カテゴリ]=”文具”;

別表から値を反映について、商品表、改定表、更新の関係を示す図。

4 別テーブルから値を更新する

T_商品とT_価格改定を商品IDで結合し、改定価格を単価へ反映します。
T_価格改定の商品IDを重複なしにし、新単価がNullの行をどう扱うか決めてください。
ここでは未設定の改定価格を除外します。

Nullの上書きを判断について、未設定、除外、明示消去の関係を示す図。

デザインビューでは、更新する単価の「レコードの更新」に [T_価格改定].[新単価] を指定します。
更新元の列名だけを書くより、表名も含める方が取り違えを防げます。

サンプルコードと式

UPDATE [T_商品] AS P
INNER JOIN [T_価格改定] AS U
ON P.[商品ID]=U.[商品ID]
SET P.[単価]=U.[新単価]
WHERE U.[新単価] Is Not Null;


5 更新できない原因を確認する

集計・クロス集計・UNIONなど、結果を直接更新できないクエリがあります。
読み取り専用ファイル、権限不足、主キーのないリンク表、結合の構成も確認します。
警告を消して実行することは解決策ではありません。

更新後は対象外の行が変わっていないことも確認します。
改定表の不備や入力規則違反がある場合、繰り返し実行して「エラーがなくなるまで」進めず、原因を修正してから再評価してください。

更新できない原因について、構造、権限、キー、規則の関係を示す図。

既存Accessへの影響を判断できない場合

本記事の手順をコピーしたファイルで試しても解決しない場合や、既存データ・他の画面への影響を判断できない場合は、お気軽にご相談ください。対象ファイル、操作手順、期待する結果を整理すると、調査や改修の範囲を相談しやすくなります。


6 実行記録と復元手順を残す

更新前後の値、対象ID、実施日時、使用した改定表を保存します。
固定値で上書きする処理と、現在値に加算する処理では再実行の影響が異なります。
現在値へ掛け算する更新は、二度実行すると二度変わります。

復元時には、更新後の別作業によるデータも保全します。
古いファイルを無条件に戻すのではなく、対象列の復元でよいか、ファイル全体を戻すかを影響範囲から判断しましょう。

実行後の照合について、対象行、対象外、記録、復元の関係を示す図。

7 よくある質問

通常の取り消しを前提にせず、バックアップや更新前の値から復元できるように準備します。

できます。キーで結合し、更新元を一意にします。

処理によります。加算や乗算は二重反映になるため、実行履歴と条件を確認します。

まとめ

復元時には、更新後の別作業によるデータも保全します。
古いファイルを無条件に戻すのではなく、対象列の復元でよいか、ファイル全体を戻すかを影響範囲から判断しましょう。

本記事の手順をコピーしたファイルで試しても解決しない場合や、既存データ・他の画面への影響を判断できない場合は、お気軽にご相談ください。対象ファイル、操作手順、期待する結果を整理すると、調査や改修の範囲を相談しやすくなります。


参考情報

Microsoft公式資料を参照しています。サンプルは説明用の架空データです。
Windows版Accessの実機検証は未実施のため、適用前に対象環境のコピーで結果を確認してください。

Microsoft:更新クエリ
https://support.microsoft.com/en-us/access/create-and-run-an-update-query

Microsoft:UPDATE文
https://learn.microsoft.com/en-us/office/client-developer/access/desktop-database-reference/update-statement-microsoft-access-sql

TOP