• ベストアンサー

ACCESSでの重複レコードの削除

ACCESSで、重複レコードを引っ張ってくるのは、重複クエリでやれましたが、逆に、重複レコード(1つのフィールド、或いは複数のフィールドに着目しての)の削除は、やれないのでしょうか? イメージしているのは、エクセルのオートフィルタでの「重複データの削除」です。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.4

方法を2つばかり示します: A)選択クエリを使用する 「重複分のデータを表示させないだけ」(=削除はしない)場合は、そのテーブルをもとにしたクエリで、「固有の値」プロパティを「はい」に設定すればOKです。 但し、テーブルのデータが   (ID,テキスト)=(1,aaa),(2,bbb),(3,bbb),(4,ccc)・・・ の場合、クエリに表示させるフィールドを「テキスト」のみにすれば、   (テキスト)=(aaa),(bbb),(ccc)・・ となってくれますが、IDも含めてしまうと、重複分がそのまま表示されます(=テーブルのデータと変わらない)。 B)削除クエリで削除後に、追加クエリで再追加する ※こちらは、テーブルのデータを変更するやり方です※ 1)重複クエリを、メニューの「クエリ(Q)」→「テーブル作成(K)」をクリックして、テーブル作成クエリにする  (作成テーブル名を、仮に「重複分」とします) 2)テーブル作成クエリを実行して、「重複分」テーブルを作成 3)元のテーブルの重複データを全て削除  (=No.1の方の回答で行ったこと) 4)「重複分」テーブルのレコードを、元のテーブルに追加する追加クエリを作成 5)追加クエリを実行 この操作を実行すると、元のテーブルのデータは下のように変わっていきます:  (ID,テキスト)=(1,aaa),(2,bbb),(3,bbb),(4,ccc)       ↓  (ID,テキスト)=(1,aaa),(4,ccc)       ↓  (ID,テキスト)=(1,aaa),(4,ccc),(5,bbb) なお、「ID」にオートナンバー型が設定されている場合を想定しています。 もし元のテーブルに「ID」がないなら、データの変遷は  (テキスト)=(aaa),(bbb),(bbb),(ccc)      ↓  (テキスト)=(aaa),(ccc)      ↓  (テキスト)=(aaa),(bbb),(ccc) となります。

noname#95859
質問者

お礼

大変遅くなりました。ありがとうございます。 理解できました。助かりました。

その他の回答 (3)

  • sanbit
  • ベストアンサー率32% (16/50)
回答No.3

私がやってました方法です。 (1)重複レコードが数件の場合は重複クエリの画面でレコードを選択し直接削除します。 (2)件数が多い時は、ホストからのデータ取り込み時など、頻繁に起きる時 コマンドボタンのプロシージャで処理します。 テーブルを読込み新しいテーブルを作成する。 削除するKeyが前のデータと同じなら書き込みしない。 参考までに、(2)は複雑です。 他に良い回答があるといいですね。

noname#95859
質問者

お礼

ありがとうございます。参考になりました。

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

簡単にやるにはそのテーブルをテーブル構造のみコピーして新しいテーブル名を付け作ります。 そうすると空の新しいテーブルが出来ますので重複させたくないフィールドに主キーかインデックス(重複なし)を設定します。複数のフィールドの重複を除くにはその各フィールドにインデックス(重複なし)を設定すれば出来ます。 元のテーブルを再度コピーし貼り付けで既存のテーブルにデータを追加を選択しコピーすると重複レコードはエラーとなり重複レコードのみテーブルに追加されない状態でレコードを追加できます。 新しく作ったテーブルの名前を元のテーブルの名前に変更すれば終わりです。(元のテーブルは削除するか名前を変更するか新しいテーブルと置き換えるかですね)

noname#95859
質問者

お礼

ありがとうございました。ACCESSを活用する上で参考になりました。

  • nonpq
  • ベストアンサー率30% (64/210)
回答No.1

>重複レコードを引っ張ってくるのは、重複クエリでやれました・・・ 重複クエリで引っ張れた結果が全て削除対称だとして、そのクエリのデザインビューでクエリのタイプを「削除」に変更し、実行すれば削除できます。 質問の内容に誤解があったらごめんなさい。

noname#95859
質問者

お礼

大変遅くなりましたが、参考になりました。ありがとうございました。

noname#95859
質問者

補足

問題があります。すべてデータがなくなってしまいました。 小生のやりたいこと。今テーブルに次のデータがあるとします。 data aaaaa aaaaa aaaaa bbbbb bbbbb bbbbb これを、重複データを削除して、 data aaaaa bbbbb だけとしたいのです。 エクセルのオートフィルタでは、1アクションでできます。それだけ、機能としては重要だと考えます。ACCESSで出来ないわけはないと思うのですが。 よろしくお願い致します。

関連するQ&A