方法はいくつかありますが。
A案
(1)
テーブルをもとにすべてのフィールドを表示した
選択クエリを作成。
(2)
集計ボタンをクリックしてグループ化する。
(3)
主キーの[集計]を「先頭」にする。
(4)
主キーの[並べ替え]を「昇順」にする。
(5)
これで、クエリを開くと重複した一方のレコードが
削除された形で表示されます。このままでいいのならば
このまま使用します。テーブルとして保存したいので
あれば、このクエリをデザインビューで開き、
ツールバーの「クエリ」から「テーブル作成」を選択し、
テーブル名を入力し、保存して実行すれば重複した
データが除かれたテーブルができます。
B案
テーブルから重複データの一方を直接削除する方法です。
なるべく、ウィザードを利用してできる方法にします。
作成の手順は以下です。なお、テーブル名は
「テーブル1」としています。慣れれば一筆で書けるように
なりますが、まずは順序を追って。
(1)
クエリの「新規作成」から「重複クエリウィザード」を
選択。
(2)
テーブルを選択し、次に「重複を調べるフィールドの選択」
で、フィールド1とフィールド2を選択し、次に
「クエリの結果に表示するその他のフィールドの選択」で
主キーを選択し、適当な名前をつけて保存。
このとき、SQL文は
SELECT テーブル1.フィールド1, テーブル1.フィールド2, テーブル1.主キー
FROM テーブル12
WHERE (((テーブル1.フィールド1) In (SELECT [フィールド1] FROM [テーブル1] As Tmp GROUP BY [フィールド1],[フィールド2] HAVING Count(*)>1 And [フィールド2] = [テーブル1].[フィールド2])))
ORDER BY テーブル1.フィールド1, テーブル1.フィールド2;
のようになっているはずです。
(3)
このクエリをデザインビューで開き、集計ボタンをクリックして
グループ化し、主キーの[集計]を「先頭」にし、フィールド1と
フィールド2の[表示]のチェックをはずしておく。保存。
このとき、このクエリのSQL文は、
SELECT First(テーブル1.主キー) AS 主キーの先頭
FROM テーブル1
GROUP BY テーブル1.フィールド1, テーブル1.フィールド2
HAVING (((テーブル1.フィールド1) In (SELECT [フィールド1] FROM [テーブル1] As Tmp GROUP BY [フィールド1],[フィールド2] HAVING Count(*)>1 And [フィールド2] = [テーブル1].[フィールド2])))
ORDER BY テーブル1.フィールド1, テーブル1.フィールド2;
のようになっているはずです。実行すると重複した
レコードの一方の主キーが表示されます。
(4)
次に新しいクエリをデザインビューから作り、テーブルを選択。
(5)
クエリの種類を「削除クエリ」に変更。
(6)
テーブルのフィールドを「主キー」のみを選択。
(7)
[抽出条件]に、上記(3)のSQL文を使用して、
In SELECT First(テーブル1.主キー) AS 主キーの先頭
FROM テーブル1
GROUP BY テーブル1.フィールド1, テーブル1.フィールド2
HAVING (((テーブル1.フィールド1) In (SELECT [フィールド1] FROM [テーブル1] As Tmp GROUP BY [フィールド1],[フィールド2] HAVING Count(*)>1 And [フィールド2] = [テーブル1].[フィールド2])))
ORDER BY テーブル1.フィールド1, テーブル1.フィールド2)
を貼り付ける。このときSQLビューでは、
DELETE テーブル1.主キー
FROM テーブル1
WHERE (((テーブル1.主キー) In (SELECT First(テーブル1.主キー) AS 主キーの先頭
FROM テーブル12
GROUP BY テーブル1.フィールド1, テーブル1.フィールド2
HAVING (((テーブル1.フィールド1) In (SELECT [フィールド1] FROM [テーブル1] As Tmp GROUP BY [フィールド1],[フィールド2] HAVING Count(*)>1 And [フィールド2] = [テーブル1].[フィールド2])))
ORDER BY テーブル1.フィールド1, テーブル12.フィールド2)));
のようになっているはずです。このクエリを実行すると、
テーブルから重複した一方のレコードが削除されます。
このSQL文は保存した後、SQLビューを開くとAccess
特有の形に変更される可能性があります。
以上です。どちらかお好み方法で。
文章が長いので誤字脱字があるかもしれません。
お礼
ありがとうございます。