SQLの副問い合わせ(サブクエリ)とは?概要・種類・使い方を解説
  • facebookページ
  • twitterページ
  • 2019.11.06

    SQLの副問い合わせ(サブクエリ)とは?概要・種類・使い方を解説

    SQLの副問い合わせ(サブクエリ)について聞いたことがない、もしくは使ったことがないという方が意外にも多いようです。SQLの副問い合わせを扱えるようになると、よりフレキシブルなデータベースの扱いが可能となりますので、エンジニアとしては必須の知識であると言えます。

    今回の記事では、SQLの副問い合わせの概要について分かりやすく解説をしつつ、SQLの副問い合わせの種類とそれぞれの使い方を説明していきましょう。

    本記事の要点
    • SQLの副問い合わせの概要
    • SQLの副問い合わせの種類と使い方

    SQLの副問い合わせとは

    SQLの副問い合わせ(サブクエリ)とは、SQLステートメントの内部に入れ子状態で入っているSQL文(クエリ)のことです。言葉だけでは分かりにくいかと思いますので、実際にSQLの副問い合わせを使用したSQL文を見てみましょう。

    まず、前提として以下のようなテーブルがあるとします。

    staffsテーブル

    rollsテーブル

    ここで、ご飯係のスタッフの名前を取得したいとしましょう。その場合、サブクエリを用いることで簡単に取得することができます。

    上記の例文は、「staffsテーブルからrollsテーブル内でidが一致し、rollが「ご飯係」のnameカラムを出力する。」という意味のSQL文です。サブクエリはWHERE以降のSELECT文です。

    SQLの副問い合わせを使用しない場合には、以下のように

    「staffsテーブルからデータを出力する。」という単純なクエリしか書くことができませんでした。SQLの副問い合わせを使用すれば、指定する条件の範囲でデータベースからデータを取得することが可能なのです。

    ポテパンダの一言メモ

    SQLステートメントという用語が出てきました。これは、SQL文の最初の「SELECT」「DELETE」「INSERT」「UPDATE」の4種類の宣言のことです。
    ステートメント(Statement)という英語自体に「宣言」という意味があります。SQL文を扱う上で、知っておきたい用語の1つです。

    【関連記事】
    ▶︎SQL select文のサンプル集 結合、ソート、別テーブル生成の記述方法は?
    ▶︎【実例で学ぶ】SQL「UPDATE」文の使い方 基礎・応用編
    ▶︎【初心者向け】SQLのDELETE文の使い方を現役SE目線で解説

    SQLの副問い合わせの種類と使い方

    さて、こちらではSQLの副問い合わせの種類と使い方についてご紹介をしていきましょう。たくさんの使い方がありますので一度で覚えようとせず、まずは構造と出力される結果への理解を深めるようにしましょう。

    使用するテーブル

    まずは、こちらで共通して使用するテーブルを確認しましょう。

    staffsテーブル

    jobsテーブル

    rollsテーブル

    WHERE句内で使用する副問い合せ1

    まずはSQLのWHERE句の中で副問い合わせを使用してみましょう。

    以下が出力結果です。

    こちらのSQL文は、「staffsテーブルからageが28以上(28歳は含まない)のレコードを取得する」という意味です。単純な指定のため副問い合わせを使用する意味を感じにくいかもしれませんが、次に紹介する例などは副問い合わせの効果をより存分に感じることができます。

    WHERE句内で使用する副問い合せ2

    同じくSQLのWHERE句の中で副問い合わせを使用してみましょう。

    以下が出力結果です。

    こちらのSQL文は、「rollsテーブルからstaffidカラムを参照し、ageが45のstaffのjobidを表示する」という意味になります。

    実際にstaffsテーブルのageカラムで45歳のstaff(idが4と5のレコード)は、rollsテーブルでjobidが1と2と振られていることがわかります。

    FROM句内で使用する副問い合せ

    次にSQLのFROM句の中で副問い合わせを使用してみましょう。

    以下が出力結果です。

    複雑なSQL文でしたが、「staffsテーブルからageカラムを参照し、降順で年齢ごとの人数をcountカラムに登録する」という意味になります。

    実際にstaffsテーブルのageカラムを見てみると、45歳のstaffが2人、28歳のstaffが2人、25歳のstaffが1人いることがわかりますね。

    まとめ

    今回の記事では、SQLの副問い合わせの概要について分かりやすく解説をしつつ、SQLの副問い合わせの種類とそれぞれの使い方を説明していきました。SQLの副問い合わせを理解すれば、さらにデータベースをフレキシブルに扱えるようになるはずです。

    今回の記事ではSQLの副問い合わせの概要をご紹介していきましたので、さらに深くSQLコマンドなどについても学んでみてくださいね。

    【関連記事】
    ▶︎SQLの達人への第一歩、結合と抽出を同時に処理するINNER JOINの使い方をマスターしよう
    ▶︎SQL having 集約関数の絞り込み whereよりもレスポンスが遅い理由とは?
    ▶︎SQLで重複データを扱うサンプルコード集 カウント、集計、最新のみ抽出、重複禁止


    ポテパンが提供するサービスについて

    本メディア「ポテパンスタイル」を運営する株式会社ポテパンは、エンジニアキャリア領域で複数サービスを提供しています。

    ポテパンフリーランス

    ポテパンフリーランス

    フリーランスエンジニアの方に高単価案件をご紹介しております。弊社ではフリーランス案件を常時300件ほど保有しており、その中からあなたに適した案件をご案内いたします。また、これから独立してフリーランスになる方の無料個別相談も承っております。フリーランスになった後の案件獲得方法やお金面(税金や保険など)についてお答えいたします!フリーエンジニアになりたい方向けのコンテンツも盛りだくさんです。

    ポテパンキャリア

    ポテパンキャリア

    エンジニア職専門の転職エージェントです。ポテパンキャリアでは、技術のわかるエージェントがあなたの転職をサポートします。エージェント自身がエンジニアなので、あなたと同じ目線で仕事内容や今後のキャリアについて一緒に考えることができます。年収800万円以上のハイスペック転職をご希望の方は「ポテパンプロフェッショナル」もご用意しておりますのでご利用下さいませ。

    ポテパンキャンプ

    ポテパンキャンプ

    ポテパンキャンプでは、RubyにてゼロからオリジナルのECサイトを作り上げてる3ヶ月間の実践型カリキュラムを提供しております。すでに本スクールの卒業生は、エンジニア職として様々な企業様に就職しております。なお、本スクールは受講料25万円と他社スクールに比べ格安となっており、またポテパンからご紹介させていただいた企業へ就職が決まった場合は、全額キャッシュバックいたします。



    株式会社ポテパンは、企業とエンジニアの最適なマッチングを追求しています。気になるサービスがあれば、ぜひ覗いてみてください!

    ポテクラバナー ポテプロバナー

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE

    ポテパンおすすめ案件