ACCESSで重複したレコードを削除する方法

ACCESSを使っていると重複したレコードができてしまう場合があります。
これをいちいち目視で確認して削除していくのは非常に効率が悪いものです。
ACCESSで重複したレコードを、クエリを使って簡単に抽出して削除する方法をご説明します。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSの基本的な使い方をご紹介していきます。

サンプルデータ

まず、今回使用するサンプルデータを準備しました。
下記のような売上情報が記録された売上テーブルです。

今回の目的は、このテーブルから日付、顧客ID、商品IDが全て重複したレコードを削除したい、としましょう。
例えば、既に売上を入力済みだったのに間違えて再度入力してしまった場合です。
もしくは売上データを他のシステムからACCESSからインポートする際に2回行ってしまって、データが重複するという場合もあるでしょう。

この件数であれば目視で行ってもできるレベルです。
しかし、実際には運用を開始したACCESSのテーブルはレコード数が数百、数千となることが一般的です。

そうなると目視で確認して消していくという作業は非現実的でしょう。
そこで便利なのが重複クエリです。

重複クエリの作成

重複クエリは、クエリウィザードから作成します。
メニューから「作成」→「クエリウィザード」を選択しましょう。

クエリの種類を聞かれますので、重複クエリウィザードを選択します。

重複データを調べるテーブルかクエリを聞かれます。
今回は売上テーブルを選択します。

重複データを調べるフィールドを聞かれます。
今回は、日付、顧客ID、商品IDの重複を調べたいので、この3つを選択して右側の「選択したフィールド」へ移動させます。

クエリに表示するフィールドを聞かれますので、残りのフィールドをすべて追加しておきましょう。

これで重複クエリが完成です。
名前を付けてクエリを実行してみましょう。

すると、下記のように、重複したレコードのみが表示されます。

あとはこの中から誤って登録したレコードを選択して削除していくのみです。
レコードの件数が減ったのでかなり作業がしやすくなり、ミスも減ると思います。

今回の場合ですと、売上IDの番号が大きいものが後から登録したレコードですので、こちらを削除することになると思います。

こうしたケースにレコードを識別できるよう、テーブルのフィールドに「登録日」を設定し、規定値でレコードを作成した日が入るようにしておくと、どちらのレコードを残すべきかの判断がしやすくなります。

特にcsvからのインポートを行うようなテーブルでは、インポート作業が重複すると全く同じレコードが複数できて見分けがつかなくなりますので、登録日設定をしておく方が無難でしょう。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

サービス一覧

最後までお読みいただき、ありがとうございました。