受講料が最大70%OFF 受講料が最大70%OFF

SQLのunion文は、selectやdelete、createなどのステートメントと比べるとあまり使用していないという方が多いのではないでしょうか。中には「unionステートメントなんて聞いたことがない…」という方もいらっしゃるはず。たしかにCREATE・SELECT・UPLOAD・DELETEのSQLステートメントを使いこなせていれば、unionステートメントを必要に感じることは少ないかもしれません。

このように一見、初心者の方が見落としがちなunionステートメントなのですが、実はその使い方はとても簡単。そして使いこなすことができれば非常に便利なステートメントなのです。

そこで今回の記事ではSQL unionの使用方法を徹底的に解説していきます。SQL文の中でも意外と知られていないunionステートメントを駆使して、WEBアプリケーションを思ったように開発できるようにしていきましょう。

本記事の要点
  • SQLにおける「union」の概要
  • SQL union文の使い方

SQLのステートメント「union」とは何か

SQLのステートメント「union」とは、複数個に渡るselectステートメントの結果を結合して表示してくれるSQLステートメントのことです。

普段、データベーステーブルのカラムから、複雑な条件付きでレコードを取り出そうとする際には、それぞれの条件に合わせて複数回selectステートメントを行なっているのではないでしょうか。unionステートメントは、そのようなわずらわしいselectステートメントの繰り返しを解消し、出力結果の可読性を向上するためのSQL文です。

「複雑な条件付きでのレコード出力」にはどのようなものがありますか?

例えば、1つ目の出力では「colorカラムからredのレコード」を出力し、2つ目の出力では「sizeカラムからbigのレコード」を出力したいという場合がそれに当たります。このような場合、selectステートメントを2回繰り返して使用している方が多く見受けられます。

「可読性」とは何ですか?

「プログラムのコードを読んだ際、コードの目的や処理の理解度」を指しています。

例えば以下のようなシチュエーションでSQLのunionステートメントを使用しています。

このような例を見ていくとSQLのunionステートメントの特徴や使いどころがわかってきたのではないでしょうか。SQLのunionステートメントは主にカテゴリーや異なるテーブルからまとめてレコードデータを出力したいという場面で使用されることが多いのです。

unionという英単語自体、あまり聞いたことがないため、unionステートメントの働きが想像しづらいかもしれません。「union」という言葉には「結合」という言葉の意味があるので「SQLステートメントを結合して出力する」という働きを想像しておくと、unionが使用された際に処理の目的や流れを目で追いやすいはずです。

ポテパンダの一言メモ

ちなみに「ステートメント」というのは、プログラミングにおいてコンピュータに対して行う命令・宣言のことです。IT用語として広く知られており、英単語としても命令、宣言という意味はもちろんのこと、「声明」「提示」といった意味を持っているのが「ステートメント」です。

また、いくつかのステートメントをまとめて使用するための複文を「ブロック」と言いますので、こちらも合わせて覚えておくとよいでしょう。

【関連記事】
▶︎SQL if文のサンプルコード集 NULL判定や、Switch文のような分岐をする方法
▶︎sqlコードの意味がわからない…不思議なSQLコードサンプル集

SQLunionの使い方

ここまでSQLのunionステートメントについてのあらましを把握していただきました。それではいよいよSQLのunionステートメントを具体的に使用する方法について詳しく解説していきましょう。

ポテパンダの一言メモ

本記事では、SQLのunionステートメントを使用する環境としてMySQLというデータベース管理システムを使用します。MySQLに関する説明は割愛しますが、まだ使用したことがないという方はこれを機に導入してみてください。

2つのselectステートメントの結合

SELECT color, size FROM fruits UNION SELECT color, size FROM foods;

SQL unionステートメントの最も基礎的な使用方法としては2つのselectステートメントを結合するというものがあります。上記のようなunionステートメントをSQL文で宣言することによってfruitsテーブルのcolorカラムとsizeカラム、foodsテーブルのcolorカラムとsizeカラムから重複しないレコードのみを出力することができます。

「重複しない」という点がunionステートメントのポイントです。unionステートメントでは、複数のselectステートメントの出力結果を1度、「結合」してしまうため、同様の結果が得られたレコード同士に関しては1つに結合することになるのです。では、重複したレコードもそれぞれ表示するためにはどのようにunionステートメントを扱えばいいのでしょうか。

【select文についてはこちらをチェック】
▶︎SQLの役割と基本文法は?データベース操作の基本を確認

重複したレコードも全て表示するためのunion文

SELECT color, size FROM fruits UNION ALL SELECT color, size FROM foods;

重複したレコードも全て表示するためのunion文には、UNIONの後に「ALL」という言葉を付け加えます。英単語「ALL(全て)」という意味の通りですが、このようにSQL文を宣言することによって、重複したレコードも含めて全て出力するようになります。

結果としては同じデータではあるものの、全てのレコードを閲覧したいというシチュエーションも必ず出てくるはずです。そのような時には「UNION ALL」を使用して、重複するレコードも全て出力するようにしましょう。

指定した数だけレコードを出力するためのunion文

SELECT color, size FROM fruits LIMIT 10 UNION SELECT color, size FROM foods LIMIT 5;

膨大なテーブルデータを扱う際、全てのレコードを出力するとコンピュータの処理に大きな負担をかけてしまう場合もあります。そのような際には指定した数だけレコードを出力するためのunion文を使用しましょう。

具体例は上記に指し示した通りで、テーブル名の後にLIMIT 値を付け加えます。上記の例では「fruitsテーブルのcolorカラムとsizeカラムから10レコード、foodsテーブルのcolorカラムとsizeカラムから5レコードを出力」することができます。他にも以下のような方法でソートを行うことも可能となっています。

SELECT color, size FROM fruits ORDER BY color UNION SELECT color, size FROM foods ORDER BY size;

基本的にはアルファベットの昇順に並び替えされた結果が返ってくることになります。出力結果をソートしたい場合にはとても便利ですね。

まとめ

今回の記事ではSQL unionの使用方法を徹底的に解説していきました。SQL文の中でも意外と知られていないunionステートメントを駆使して、WEBアプリケーションを思ったように開発できるようにしていきましょう。

【関連記事】
▶︎【初心者向け】SQLのDELETE文の使い方を現役SE目線で解説
▶︎【こんな使い方も?】SQL insertの使用方法を徹底的に解説
▶︎エンジニア必携!SQLインジェクション対策スキルをプロが解説

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。