ここから本文です

Access重複クエリで重複レコードの1つだけ残しその他重複したレコードを削除する...

nag********さん

2013/6/2813:32:38

Access重複クエリで重複レコードの1つだけ残しその他重複したレコードを削除するにはどうしたらいいでしょうか。

3つ重複して入ってしまったレコードを1つだけ残し、残り2つは削除したいです。
また、重複する事が多々ありその都度削除し、レコード件数を減らしたいです。
これをマクロとして、簡単に行いたいです。
重複クエリ・削除クエリ・追加クエリの組合せだと思うのですが上手くいかず。

構築の仕方が分かる方、教えていただけると助かります。

よろしくお願い致します。

補足レコードの内容は完全に一致しております。

閲覧数:
97,028
回答数:
2
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

nii********さん

2013/6/2816:22:40

重複したレコードの中で
どれを残すのかのルール決めをする必要があると思います。


そのテーブルは、
重複したレコードの中で
ユニークなキーを持つフィールドはありますか。

オートナンバーとか、
レコード更新日時とか、
です。


例えば
主キーがオートナンバーで、重複データの内、
主キーの最小のものを残す(最初に作られたレコードを残す)場合
下記でどうでしょう。

かならずaccessファイルのバックアップを取ってから試してください。

重複データを削除したいテーブルを「T1」とします。

1)集計クエリーを作成する
T1から、
・重複するデータのあるフィールド→グループ化
・主キー:最小

2)選択クエリーで
T1と、1)のクエリーを
主キーの不一致クエリーを作成する。
つまり、元々のテーブルの内1)に無いレコードの主キーを算出する。
フィールドは主キーだけでよい。

3)2)を元にして、テーブル作成クエリーを作り実行。
作成されるテーブルをT2とする。
フィールドは主キーだけでよい。

4)削除クエリーで
T1をメインとし、
T1と、3)で作成されたテーブルT2を
主キーで連結する。
削除クエリ実行する。

この質問は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

ed_********さん

2013/7/100:27:00

重複するレコードはレコード番号以外は完全に一致ということでよろしいでしょうか?
そうであれば、レコード番号が付け変わっても構わないのであれば、レコード番号以外の項目全てでグループ化を行い、その内容でテーブルを書き直せば良いと思います。

自分ならこんな感じでしょうかねえ。

①元テーブルをバックアップ(処理途中で死んだ時のため)
②グループ化した内容でテーブル作成
③元テーブルに対して削除クエリ
④元テーブルに②の内容で追加クエリ

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる