No.006
削除クエリで、別のテーブルまたはクエリと共通するレコードを一括削除する
2003/2007/2010/2013/2016
削除クエリの基本は、削除クエリのデザイン ビューには削除対象のテーブルを追加して、そのテーブル内のフィールドで条件設定を行い、対象のレコードを削除します。
今回は、別のテーブルまたはクエリに合致するレコードを追加しているテーブルから削除する、という内容です。
例えば、次の2つのテーブルで合致するレコードを削除したいです。
テーブル[テーブル1]の[F1]フィールドにある、テーブル[テーブル2]の[F5]フィールドに一致する3件のデータを削除したいということで、次のような削除クエリや、さらに抽出条件に「[テーブル2]![F5]」と設定しても、メッセージが表示されうまく動作しません。
イメージはおわかりいただけるでしょうか。
このような、テーブルから削除するレコードの条件が、別のテーブルやクエリにある場合の削除クエリは、SQLを利用した設定で動作可能となります。
では、作業してみましょう。
- クエリをデザイン ビューで新規作成し、テーブル[テーブル1]を追加し、削除の条件となるフィールド[F1]をデザイン グリッドに配置します。
- [クエリ ツール]-[デザイン]タブ-[クエリの種類]グループの[削除]をクリックして、削除クエリに切り替えます。
- [レコードの削除]セルには「Where」と表示されているのを確認したら、[抽出条件]セルに次のように指定します。
In (SELECT テーブル1.[F1] FROM テーブル1 INNER JOIN テーブル2 ON テーブル1.F1 = テーブル2.[F5];)
- [クエリ ツール]-[デザイン]タブ-[結果]グループ-[実行]ボタンをクリックします。
- メッセージが表示され[はい]をクリックします。
- 以上で削除は完了していますので、テーブルを確認してください。
下図は、テーブルを開いた状態で削除クエリを実行しましたので、削除データ分のところが「#Deleted」と表示されています。再起動や[すべて更新]を行うと、「#Deleted」の行は削除されます。
- 削除クエリは必要であれば保存します。
Access2003の場合は、
[クエリ]メニュー-[削除]をクリックして、削除クエリに切り替えます。