【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ドライブ直下に配置した場合。
[sql]CREATE DATABASE worldcup2014;
USE worldcup2014;
Source C</span>/worldcup2014.sql
[/sql]
- 表副問い合わせを使ってグループAのランキング合計を表示する。(使用するテーブル:countries)
以上、表副問い合わせについてでした。