プロが教えるわが家の防犯対策術!

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

A 回答 (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)

となります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/10/05 08:55

私がやってました方法です。


(1)重複レコードが数件の場合は重複クエリの画面でレコードを選択し直接削除します。

(2)件数が多い時は、ホストからのデータ取り込み時など、頻繁に起きる時
コマンドボタンのプロシージャで処理します。
テーブルを読込み新しいテーブルを作成する。
削除するKeyが前のデータと同じなら書き込みしない。

参考までに、(2)は複雑です。 他に良い回答があるといいですね。
    • good
    • 2
この回答へのお礼

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

お礼日時:2005/10/05 08:54

簡単にやるにはそのテーブルをテーブル構造のみコピーして新しいテーブル名を付け作ります。


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

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

お礼日時:2005/10/05 08:53

>重複レコードを引っ張ってくるのは、重複クエリでやれました・・・


重複クエリで引っ張れた結果が全て削除対称だとして、そのクエリのデザインビューでクエリのタイプを「削除」に変更し、実行すれば削除できます。

質問の内容に誤解があったらごめんなさい。

この回答への補足

問題があります。すべてデータがなくなってしまいました。

小生のやりたいこと。今テーブルに次のデータがあるとします。

data
aaaaa
aaaaa
aaaaa
bbbbb
bbbbb
bbbbb

これを、重複データを削除して、
data
aaaaa
bbbbb
だけとしたいのです。

エクセルのオートフィルタでは、1アクションでできます。それだけ、機能としては重要だと考えます。ACCESSで出来ないわけはないと思うのですが。
よろしくお願い致します。

補足日時:2005/09/14 10:19
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/10/05 08:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A