Accessのクエリで重複レコードをチェックする(SQLはWHEREではなくHAVING)

次のようなテーブルで、名前が重複していないかチェックしたいこともあります。

名前が重複したテーブル
名前が重複したテーブル

重複レコードをチェックする重複クエリウィザードを使う場合は、「作成」‐「クエリウィザード」メニューで「重複クエリウィザード」を選択します。

クエリウィザード
クエリウィザード

重複を調べるテーブル(またはクエリ)を選択して次に進みます。

チェックするテーブルを選択
チェックするテーブルを選択

重複をチェックするフィールドを選択します。ここでは、「名前」をチェックします。

重複をチェックするフィールドを選択
重複をチェックするフィールドを選択

「完了」をクリックすると、「xxxxxの重複レコード」という名前のクエリに重複結果が表示されます。ここでは、「西沢直木」が2件あることを示しています。

重複結果の表示
重複結果の表示

※「完了」ではなく「次へ」をクリックすると、結果に表示するフィールドや、クエリ名を指定することもできます。

クエリ名を指定できる
クエリ名を指定できる

SQLビューで重複をチェックするSQLを入力して実行する

「作成」‐「クエリデザイン」メニューで空のクエリを作成して、SQLビューで直接SQLを入力してレコードの重複をチェックする方法もあります。

たとえば、次のようなSQLをSQLビューに入力します。

SELECT 名前, Count(名前) AS カウント
FROM 重複チェック
GROUP BY 名前
HAVING Count(名前)>=2;
  • SELECT 名前, Count(名前) AS カウント ---「名前」「カウント」というフィールドを持つクエリを作成します。カウントフィールドは、名前の件数を集計します。
  • GROUP BY 名前 --- 名前ごとに集計します。
  • HAVING Count(名前)>=2 --- 名前の件数が2件以上あった場合のみ(つまり重複している)表示します。

※「2件以上あった場合は」の絞り込みは、集計結果に対して絞り込みをかけるので、全データから条件抽出するWHEREではなく、HAVINGを使います。

実行すると、名前が重複したレコードが表示されます。

重複レコードが表示される
重複レコードが表示される

Microsoft Office