広告

Accessのユニオンクエリ 2タイプのまとめ

「ユニオンクエリ」とは何ぞや?が分かっている方向けに、2種類の違いと検証結果をまとめました。
タイプSQL文テーブル追加時 繰返しパート
全部入りSELECT * FROM テーブル1 UNION ALL SELECT * FROM テーブル2;UNION ALL SELECT * FROM テーブルX
重複排除SELECT * FROM テーブル1 UNION SELECT * FROM テーブル2;UNION SELECT * FROM テーブルX
  • クエリをSQLビューに切り替えて上の表の「SQL文」をコピペし、「テーブル1」「テーブル2」の所をお手元のAccessファイルに合わせて書き換えれば即、使用できます。
  • テーブル以上をがっちゃんこしたい場合は、「SQL文」文末のセミコロン(;)の前半角スペース+テーブル追加時 繰り返しパート」のコピーを挿入して、テーブル名を書き換えて行けば、どんどん増やせます。

ALLの有無で違ってくること

タイプ特徴
UNION ALL
全部入り
がっちゃんこした結果、重複するレコードがあっても全てそのまま表示される
(がっちゃんこしたテーブルのレコード数の合計=ユニオンクエリのレコード数)
UNION
重複排除
がっちゃんこした結果、重複するレコードがあった場合は、勝手に重複排除してくれる
つまりグループ化クエリと同じ働きがある→ということは長い文字列型フィールドに含まれる255文字を超える部分は切り落とされてしまう
←ハイ、ここ注意!(切れ落ちではなく、文字化けになったこともあったような…)
下図のような2つのテーブルから、各タイプのユニオンクエリを作った結果を載せておきます。黄色の4レコードは、全く同じ内容で被っている状態です。
テーブルA(12レコード)
テーブルB(10レコード)

全部入りユニオンクエリ~UNION ALL~

  • SQLビューとデータシートビューです。水色(選択)部分のレコードが、各2件ずつ重複状態になっていて、トータルレコード数は12+10=22レコードになっています。

重複排除ユニオンクエリ~UNION~

  • データシートビューの水色(選択)部分のレコードが重複排除されて1件ずつになっていて、トータルレコード数が18件(12+10-重複4)になっています。