ACCESS UNIONとUNION ALLの違い

UNIONとUNION ALLの違い

ACCESSにはユニオンクエリという機能があります。
ユニオンクエリでは、複数のテーブルのレコードをあたかも1つのテーブルにあるように仮想的に表示することが可能です。

このユニオンクエリではUNIONというコマンドを利用しますが、UNIONとUNION ALLという2種類の方法があります。

今回は、UNIONとUNION ALLの違いをご紹介します。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは基本機能だけでも十分便利ですが、VBAを使うことで格段に使いやすいデータベースを作成可能です。
この記事ではACCESSでのVBAの使い方をご紹介していきます。

UNIONとUNION ALLの違い

先に結論からお伝えしますと、UNIONとUNION ALLの違いはレコードの重複を許すか許さないか、です。

UNIONselect * from テーブル1 union select * from テーブル2;重複したレコードは表示しない
UNION ALLselect * from テーブル1 union all select * from テーブル2;重複したレコードも表示する

このように使い分けができます。

ユニオンクエリの作成方法

ユニオンクエリは以下の手順で作成します。

まず、クエリをデザインビューで新規作成しましょう。
すると、上段のメニューに「ユニオン」というボタンがあります。

こちらを押すと、真っ白な画面が出てきます。

いつものクエリ作成と全然違う、と思われると思います。
そうです。
ユニオンクエリはクエリとは名がついているものの、ここにSQL文を記載していくのです。

例として下記の通り記述します。


 select * from ユニオン1_顧客名 union select * from ユニオン2_商品;
 

最も基本的なSQL文の形である「SELECT * FROM テーブル/クエリ名」をUNIONでつなげただけです。
実行を押して結果を見てみましょう。

このように、2つのクエリで抽出されたレコードがまとめて表示されました。

UNION ALL

前述のUNIONですと重複したレコードが削除されてしまいます。
重複レコードも含めてすべて表示するにはUNION ALLを使用します。

例えば、前の例ですと以下のように記述します。
UNIONの後にALLがありますね。


 select * from ユニオン1_顧客名 union all select * from ユニオン2_商品;
 

結果をデータシートビューで見てみましょう。

赤枠で囲った売上ID:13が重複していることが分かると思います。

以上、UNIONとUNION ALLの違いをご紹介しました。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

サービス一覧

最後までお読みいただき、ありがとうございました。