• ベストアンサー

アクセス:レコード中の重複あたいを削除する方法

100件のレコードがあります。フィールドAに4桁の一意なデータが入っています。フィールドBにはフィールドAの頭から3桁を抜き出したデータが入っています。 Aは一意でもBはそうではなくなる場合があり重複が発生します。この重複のデータのみを削除する方法を教えていただけないでしょうか。 フィールドA、 フィールドB ABC1、ABC ABC2、ABC ABD1、ABD ABD2、ABD どれぞれ二つ目のABCとABDを削除し、下記のようにしたい。 フィールドA、 フィールドB ABC1、ABC ABC2、 ABD1、ABD ABD2、

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

  • ベストアンサー
  • naoto0216
  • ベストアンサー率46% (183/391)
回答No.2

No.1です。 思いつく方法としては、当該テーブルをAとします。 テーブルAをグループ化し、フィールド1を「最小」にしてテーブル作成クエリでテーブルBを作成します。 テーブルBの内容は、  フィールドA フィールドB  ABC1    ABC  ABD1    ABD となります。 ※要するにフィールドBの1種類に対して、フィールドAも1種類だけとしたもの。よって、「最小」ではなく「最大」でもよいかと思います。 で、次にテーブルA全件に対して、テーブルBを紐付けます(フィールドAで)。 また、抽出条件としてテーブルBのフィールドA(最小)をNullとしします。 これで、テーブルBのABC1及びABD1以外のレコードが抽出されると思います。 このクエリを更新クエリにして、テーブルAのフィールドBをNullにするように して実行します。 そうすると、 フィールドA、 フィールドB ABC1、ABC ABC2、 ABD1、ABD ABD2、 になるかと思います。

ticktak
質問者

お礼

やりました! できました。大変ありがとうございます。

ticktak
質問者

補足

グッドアイデアだと思います。早速やってみます。後程報告します。 ありがとうございます。

その他の回答 (1)

  • naoto0216
  • ベストアンサー率46% (183/391)
回答No.1

例だけみると、  UPDATE テーブル1 SET [テーブル1].[フィールドB] = Null  WHERE ((([テーブル1].[フィールドA]) Like "AB*2")); でいけると思うのですが、こんな単純な話ではないんですよね?

ticktak
質問者

補足

そうですね。これだと例文の分しか対応できないです。いろんなパターンがありますので・・・ ありがとうございます。