Developer

【SQL基礎】表副問い合わせ
2021.02.28
Lv1

【SQL基礎】表副問い合わせ

本項では表副問い合わせについて説明していきます。

表副問い合わせ


副問い合わせとはの記事でご紹介しましたが、副問い合わせには表副問い合わせというものがあります。

単一行副問い合わせや複数行副問い合わせでは、検索結果は行に対して行われましたが、

表副問い合わせは検索結果がn行n列の表となります。(nは複数)

利用できる箇所としては、SELECT文のFROM句やINSERT文などに記述できます。

 

それでは実際に表副問い合わせを使ってデータを抽出してみましょう。

今回は以下テーブル(テーブル名:teachers)を使用します。


SELECT *

FROM teachers ;

FROM句での表副問い合わせ


FROM句での表副問い合わせは、内側のSELECT文に抽出したいカラム名を記述します。

複数のカラムを記述したい場合はカンマ(,)で区切ります。1つ注意しなければならないのが、サブクエリを書いてそのまま実行するとエラーになることです。

副問い合わせでテーブルを作成した後は、そのテーブルにasで名前をつける必要があるのです。


SELECT *

FROM (SELECT id,name,score FROM teachers WHERE score >= 70) as SUB;

副問い合わせで作成したテーブルにasで「SUB」という名前をつけたので特に問題なくデータを表示できました。

では、asで名前をつけないとどうなるでしょうか?


SELECT *

FROM (SELECT id,name,score

FROM teachers

WHERE score >= 70) ;

上記構文はasを抜かした以外は同じです。このようにテーブルに名前をつけないとエラーとなり、データを抽出できないので名前のつけ忘れに気をつけましょう。

 

今回の学習ポイント


・表副問い合わせの検索結果はn行n列の表形式になる。

・副問い合わせで作成したテーブルには名前をつける。

 

練習問題

問題として使用するデータは「SQL練習問題」のものを使用しています。

以下からダウンロード可能です。

以下のようにしてworldcup2014データベースを作成し、インポートしてください。

※worldcup2014.zip解凍してできるworldcup2014.sqlファイルをCドライブ直下に配置した場合。

worldcup2014.sql

[sql]

CREATE DATABASE worldcup2014;

USE worldcup2014;

Source C</span>/worldcup2014.sql

[/sql]

 

  1. 表副問い合わせを使ってグループAのランキング合計を表示する。(使用するテーブル:countries)
答え
[sql]

SELECT SUM(ranking)as ranking合計

FROM (SELECT id,name,ranking

   FROM countries

   WHERE group_name = ‘A’)as SUB;

[/sql]

 

以上、表副問い合わせについてでした。

 

 

連載目次リンク

SQL基礎 連載目次

関連する連載リンク

SQL練習問題 一覧まとめ