9章サブクエリ

サブクエリはSQLの4種類のデータ文のすべてで利用できる強力なツールです。サブクエリを利用すれば、データのフィルタリング、値の生成、そして一時的なデータセットの生成が可能です。本章では、その方法を詳しく見ていきます。少し試してみれば、サブクエリがSQL言語の最も強力な機能の1つであることに納得がいくでしょう。

9.1 サブクエリとは何か

サブクエリ(subquery)とは、別のSQL文に含まれているクエリのことです(ここでは、このSQL文を「外側の文」と呼ぶことにします)。サブクエリは常に丸かっこ(())で囲まれ、通常は外側の文よりも先に実行されます。通常のクエリと同様に、サブクエリは次のいずれかで構成された結果セットを返します。

  • 列が1つだけ含まれた1行のデータ
  • 列が1つだけ含まれた複数行のデータ
  • 複数の列が含まれた複数行のデータ

サブクエリから返される結果セットの種類により、サブクエリの使い方と、外側の文がその結果セットにアクセスするために使える演算子が決まります。外側の文の実行が終了すると、サブクエリから返されたデータはすべて削除されます。このため、サブクエリは文スコープ(statement scope)の一時テーブルのような働きをします。文スコープは、SQL文の実行が終了した後、サブクエリの結果セットのために確保されたメモリがすべて解放されることを意味します。

ここまでの章でもサブクエリの例を見てきましたが、単純な例から始めることにしましょう。

mysql> SELECT customer_id, first_name, last_name
    -> FROM customer
    -> WHERE customer_id = (SELECT MAX(customer_id) ...

Get 初めてのSQL 第3版 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.