サブクエリは SELECT
ステートメントの FROM
節で正式に使用できます。
実際の構文は次のとおりです。
SELECT ... FROM (<subquery>) AS <name> ...
FROM
節のテーブルには名前が必要なため、AS
<name>
節は必ず指定する必要があります。<subquery>
選択リスト内のカラムはいずれも一意な名前を持っていなければなりません。この構文については、このマニュアルの別の場所で、``派生テーブル''
という用語に関連して説明しています。
たとえば、次のようなテーブルがあると想定してください。
CREATE TABLE t1 (s1 INT, s2 CHAR(5), s3 FLOAT);
このテーブルに基づいて、FROM 節のサブクエリ機能を使用するには、次のように記述します。
INSERT INTO t1 VALUES (1,'1',1.0); INSERT INTO t1 VALUES (2,'2',2.0); SELECT sb1,sb2,sb3 FROM (SELECT s1 AS sb1, s2 AS sb2, s3*2 AS sb3 FROM t1) AS sb WHERE sb1 > 1;
結果: 2、'2'、4.0
もう 1 つ例を示します。グループ化されたテーブルの合計の平均値を確認する必要があるとします。この場合、次のクエリは機能しません。
SELECT AVG(SUM(column1)) FROM t1 GROUP BY column1;
しかし、次のクエリを使用すれば、必要な情報が得られます。
SELECT AVG(sum_column1) FROM (SELECT SUM(column1) AS sum_column1 FROM t1 GROUP BY column1) AS t1;
注意: サブクエリで使用されているカラム名
(sum_column1)
は外側のクエリで認識されます。
現在のところ、FROM
節のサブクエリを相関クエリにすることはできません。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.