ヘルプの森~Excel・Access・Office全般ヘルプデスクサイト

No.006

削除クエリで、別のテーブルまたはクエリと共通するレコードを一括削除する

2003/2007/2010/2013/2016

削除クエリの基本は、削除クエリのデザイン ビューには削除対象のテーブルを追加して、そのテーブル内のフィールドで条件設定を行い、対象のレコードを削除します。

今回は、別のテーブルまたはクエリに合致するレコードを追加しているテーブルから削除する、という内容です。

例えば、次の2つのテーブルで合致するレコードを削除したいです。

テーブル

テーブル[テーブル1]の[F1]フィールドにある、テーブル[テーブル2]の[F5]フィールドに一致する3件のデータを削除したいということで、次のような削除クエリや、さらに抽出条件に「[テーブル2]![F5]」と設定しても、メッセージが表示されうまく動作しません。

エラー

イメージはおわかりいただけるでしょうか。

このような、テーブルから削除するレコードの条件が、別のテーブルやクエリにある場合の削除クエリは、SQLを利用した設定で動作可能となります。

では、作業してみましょう。

  1. クエリをデザイン ビューで新規作成し、テーブル[テーブル1]を追加し、削除の条件となるフィールド[F1]をデザイン グリッドに配置します。
  2. [クエリ ツール]-[デザイン]タブ-[クエリの種類]グループの[削除]をクリックして、削除クエリに切り替えます。
    削除クエリ
  3. [レコードの削除]セルには「Where」と表示されているのを確認したら、[抽出条件]セルに次のように指定します。
      In (SELECT テーブル1.[F1] FROM テーブル1 INNER JOIN テーブル2 ON テーブル1.F1 = テーブル2.[F5];)
    削除クエリ
  4. [クエリ ツール]-[デザイン]タブ-[結果]グループ-[実行]ボタンをクリックします。
  5. メッセージが表示され[はい]をクリックします。
    削除メッセージ
  6. 以上で削除は完了していますので、テーブルを確認してください。
    下図は、テーブルを開いた状態で削除クエリを実行しましたので、削除データ分のところが「#Deleted」と表示されています。再起動や[すべて更新]を行うと、「#Deleted」の行は削除されます。
    削除クエリ結果
  7. 削除クエリは必要であれば保存します。

Access2003の場合は、
[クエリ]メニュー-[削除]をクリックして、削除クエリに切り替えます。

関連ヘルプ

クエリの演算フィールドについて、式ビルダーの使い方
クロス集計クエリの結果のNull値を「0」と表示する
重複のない一通りデータを取得したい
テーブルのデータ型をクエリで変更する 《データ定義クエリ》
外部結合とは
複数テーブルをつなげてレコードを結合する 《ユニオン クエリ》
クエリで空白(でない)データを抽出したい、Accessの空白について
重複クエリとは
部分一致のパラメーター クエリを作成する、パラメーター クエリの設定方法
更新クエリでテーブルのデータを置換する(文字列の一部更新)
クロス集計クエリを元にパラメーター クエリを実行「~認識できません」エラー
特定のレコードのみ最初に並べ、他のレコードは普通に並べ替えする
基本的な抽出条件の書き方について
ワイルドカードや数式を使用した高度な抽出
クエリで連番、グループ連番をふる
アクション クエリのメッセージを非表示にするには
twitter hatena line pocket