簡単に言うと、サブクエリーは単一値を返すスカラーサブクエリーということになります。スカラーサブクエリーは単純な演算子で、単一カラム値やリテラルが正当であればほとんどどこでも利用することができ、データ型、長さ、NULL
          になり得るかどうかという指示など、すべての演算子が持つ特徴もすべて持っています。例
          :
        
CREATE TABLE t1 (s1 INT, s2 CHAR(5) NOT NULL); INSERT INTO t1 VALUES(100, 'abcde'); SELECT (SELECT s2 FROM t1);
          この SELECT
          内のサブクエリーは、CHAR
          のデータ型を持ち、長さが 5
          で、CREATE
          TABLE
          時にデフォルトと同等のキャラクタセットと照合が実施されており、そしてカラム内の値が
          NULL
          になり得るという指示を持つ単一値
          ('abcde')
          を返します。実際は、ほとんどのサブクエリーが
          NULL
          になり得ます。もし例で使用されたテーブルが空であれば、サブクエリーの値は
          NULL
          になるでしょう。
        
          スカラーサブクエリーを利用できないコンテキストがいくつかあります。もしステートメントがリテラル値だけを許容するなら、サブクエリーを利用することはできません。たとえば、LIMIT
          にはリテラル整数の引数が必要であり、LOAD
          DATA INFILE
          にはリテラル文字列のファイル名が必要です。これらの値を供給するのにサブクエリーを利用することはできません。
        
          次の節にある、より質素な構造を含む
          (SELECT column1 FROM t1)
          の例を見るとき、自分自身のコードが、それよりもさらに多様で、複雑な構造を含んでいると想像してください。
        
2 つテーブルを作成すると仮定します。
CREATE TABLE t1 (s1 INT); INSERT INTO t1 VALUES (1); CREATE TABLE t2 (s1 INT); INSERT INTO t2 VALUES (2);
          次に、SELECT
          を実行します。
        
SELECT (SELECT s1 FROM t2) FROM t1;
          2 の値を持つカラム
          s1 を含む行が
          t2
          にあるので、その結果は
          2 となります。
        
スカラーサブクエリーは式の一部になり得ますが、もしそのサブクエリーが関数に引数を与える演算子だとしても、括弧を忘れないでください。例 :
SELECT UPPER((SELECT s1 FROM t1)) FROM t2;

