Search

  毎日にもっと楽~を! BLOG Tokyo

2007年5月14日

【ACCESS】重複するレコードを見つけて削除する

重複するレコードを見つけて削除したい場合がよくある。重複クエリウィザードを使っても一発ではできないのだが、ちょっとだけ工夫をすると意外と簡単だ。

1.元テーブルを構造だけコピーして貼り付けする
2.コピーしたテーブルに重複を調べるフィールドに主キーを設定する
3.元テーブルをベースに新規クエリで追加クエリを作成し、コピーしたテーブルに追加クエリを実行すると一意のフィールドのみが追加される(主キーを設定しているから)。

マイクロソフトのサイトへ


Microsoft Access のデータベースに複数のソースからインポートされたデータがある場合、または長年使用していて正しくセットアップされていなかったデータベースを継承した場合、データベースに重複するレコードが含まれ、それらを整理する必要がある場合があります。

Access のテーブルに重複するレコードがあるかどうかを判定するために、Access で重複クエリ ウィザードを使用できます。また、テーブルに含まれる重複が比較的少なく、削除するレコードを決定する前に調査する場合には、重複クエリウィザードによって重複するレコードを整理できます。自動的に重複するレコードを削除して、元のレコードを保持しておくこともできます。

重複レコードまたはフィールドの値を検索するには
重複するレコードを含むデータベースを開きます。
データベース ウィンドウで、[オブジェクト] の [クエリ] をクリックし、ツールバーの [新規作成] をクリックします。
[新しいクエリ] ダイアログ ボックスで [重複クエリ ウィザード] をクリックし、[OK] をクリックします。
ウィザードのテーブルの一覧から、重複するレコードのあるテーブルを選択してから、[次へ] をクリックします。
重複するレコードに対して異なる表記をされた住所を比較する場合、選択可能なフィールドの一覧で、"市区町村" フィールドなどの重複するデータを含む 1 つまたは複数のフィールドを選択します。[次へ] をクリックします。
選択可能なフィールドのリストから、"住所" フィールドなど、重複するレコードの中で調査するデータを含む 1 つまたは複数のフィールドを選択します。 [次へ] をクリックします。
「重複した顧客の検索」など、クエリの名前を入力して、[完了] をクリックしてクエリを実行します。
クエリを実行すると、重複するフィールドのあるレコード (この例では、同じ市区町村を含むすべてのレコード) が重複するフィールド (市区町村) を基準にして並べ替えられ、住所などのその他のフィールドのデータを比較できます。この例では、"住所" フィールドには、同じ顧客に対して表記の異なったデータ (丁目とハイフンなど) が含まれています。

データベースに含まれる重複の数が少ない場合、不要なレコードを選択して削除できます。"住所" フィールドで "丁目" や "番地" をハイフンで代用している重複レコードを削除すると、レコードは次のように表示されます。

ただし、重複を検索するクエリを削除するクエリに変換して、重複するレコードを削除することはできません。これは、重複の検索クエリでは、削除する方のレコードを選択できるように、元のレコードとそのレコードの重複の両方を結果として返すからです。そのため、重複を検索するクエリを削除するクエリに変換すると、元のレコードと重複するレコードの両方が削除されます。ただし、削除する方のレコードを選択する必要がない場合は、元のレコードを残したままで、重複するレコードを自動的に削除する方法があります。

自動的に重複するレコードを削除して元のレコードを保持しておくには
テーブルから重複するレコードを削除するには、次の 2 つの手順が必要です。最初に、重複のあるテーブルの構造のコピーを作成してから、重複のあるすべてのフィールドの主キーを作成します。次に、元のテーブルから新しいテーブルに追加クエリを作成して実行します。主キーであるフィールドには重複するレコードを含めることはできないので、この手順によって重複するレコードのないテーブルが生成されます。

テーブルをコピーして重複のあるフィールドの主キーを作成するには
データベース ウィンドウでテーブルを選択します。
ツールバーの [コピー] をクリックします。
ツールバーの [貼り付け] をクリックします。
[テーブルの貼り付け] ダイアログ ボックスでコピーするテーブルの名前を入力し、[テーブル構造のみ] をクリックして、[OK] をクリックします。
デザイン ビューで新しいテーブルを開き、コピーしたテーブルの重複を含むフィールドを選択します。
ツールバーの [主キー] をクリックして、選択したフィールドに基づいて主キーを作成します。
テーブルを保存して閉じます。
新しいテーブルに一意のレコードのみを追加するには
重複を含む元のテーブルに基づいて新しいクエリを作成します。
クエリ デザイン ビューで、ツールバーの [クエリの種類] をクリックして、[追加] をクリックします。
[追加] ダイアログ ボックスの [テーブル名] ボックスの一覧で新しいテーブルの名前をクリックし、[OK] をクリックします。
アスタリスク (*) をクエリのデザイン グリッドにドラッグして、元のテーブルのすべてのフィールドを含めます。
ツールバーの [実行] をクリックします。
行が追加されることを示すメッセージが表示されたら、[はい] をクリックします。
追加クエリですべてのレコードを追加できないことを示すメッセージが表示されたら、[はい] をクリックします。これによって、一意のレコードのみが新しいテーブルに転送され、重複するレコードは破棄されます。
テーブルを開いて結果を表示します。新しいテーブルに正しい一意のレコードが含まれていることを確認してから、元のテーブルを削除して、新しいテーブルの名前を元のテーブルの名前に変更します。



Bookmark and Share


編集長のおすすめの一冊!2010

comments

comment form

(BLOG Tokyo にはじめてコメントされる場合、不適切なコメントを防止するため、掲載前に管理者が内容を確認しています。適切なコメントと判断した場合コメントは直ちに表示されますので、再度コメントを投稿する必要はありません。)

comment form