サブクエリとは、SQLの中に記述する別のSQLを記載し、一時的なビューのようなものを用いる手法のことをいいます。抽出したい条件が複雑になった際に用いることの多い構文です。今回はサブクエリについて紹介します。
サブクエリとは
studentsテーブル
| id | name | age |
| 1 | 山田 | 15 |
| 2 | 田中 | 16 |
| 3 | 佐藤 | 15 |
| 4 | 高橋 | 17 |
下記のように、FROM句の中でサブクエリを記載することで、ageとageの数をcount関数で合計した数値を抽出することができます。
SQL
SELECT age, age_count
FROM (SELECT age, COUNT(age) as age_count
FROM students
GROUP BY age) as s1;抽出結果
SQL
age | age_count
15 2
16 1
17 1下記と同じ処理を1文の中で行っております。ビュー(View)は1つ以上のテーブルから必要な要素のみを取得して作成される仮想的なテーブルのようなものです。下記の例は、studentsテーブルからageとageの数(ここではage_countと名付ける)を取得した仮想テーブルを作り、student_1と名付けています。
SQL
CREATE VIEW student_1 AS
SELECT age, COUNT(age) as age_count
FROM students
GROUP BY age;
select age, age_count from student_1;サブクエリを用いると、上記のような仮想テーブルを一つの文の中で作成し、冗長なコードを避けることができます。
エンジニアからのアドバイス
1つのSQL文の中にサブクエリを重ねて複数用いることも可能です。可読性に注意しながら必要に応じて用いましょう。
サブクエリは、大抵はJOIN文で書くことができ、更にJOIN文の方が早い場合が多いです。サブクエリを使用するのは、JOINと比べて早くなる時、集計結果を用いて更に処理を行いたい時、特定の件数においてSQLを実行したい時などが考えられます。
