サブクエリの概念
-
別のクエリの条件としてクエリの結果
-
そこネストされたクエリは、クエリが内部サブクエリと呼ばれています
-
括弧を使用するサブクエリ
3例サブクエリの結果
-
サブクエリの結果は、単一の分離され
-
サブクエリの結果は、複数行の単一列であります
-
サブクエリの結果は、複数の列と行であります
サブクエリの結果の値であります
SELECTクエリフィールドFROMテーブルWHEREフィールド=(サブクエリ)。
以下のような:
学生は、個人情報フォームを作成します
CREATE TABLEの学生( 同上INT(30 )、 名前VARCHAR(10 )、 年齢INT(4 )、 性別VARCHAR(25 )、 PRIMARY KEY (ID) )。
テーブルの達成を作成します。
CREATE TABLEのコースを( 同上INT(30 )、 JavaのINT(5 )、 PythonのINT(5 )、 MySQLのINT(5 )、 HadoopのINT(5 )、 C INT(5 )、 PHP INT(5 )、 LinuxのINT(5 )、 英語INT(5 )、 数学INT(5 )、 CONSTRAINTは id_course FOREIGN KEY(ID)の参照を学生(ID) )。
ケース:Javaの最高達成学生の情報を照会します
SELECT * FROM 生徒 WHERE ID = ( SELECT ID FROM もちろん WHEREジャワ= ( SELECT MAX(Java)のFROM コース ) );
サブクエリの結果は、複数行の単一列であります
サブクエリの結果は、単一のマルチラインの実施形態では、結果セット、IN演算子を使用して、親クエリ、またはBETWEEN ... ANDと同様のアレイであります...
SELECTクエリフィールドFROMテーブルWHEREフィールド、IN(副問合せ)。
ケース:学生のジャワ情報の平均値よりも低く問い合わせます
SELECT * FROM 生徒 WHERE ID BETWEEN (SELECT MIN(ID)FROMもちろんWHEREのJava <(SELECT AVG(Java)のFROM コース)) AND (SELECT MAX(ID)FROMもちろんWHEREのJava <(SELECT AVG(Java)のFROMコース)) ;
サブクエリの結果は、複数の列と行であります
確かに、長い複数の列のようにサブクエリ結果、FROMテーブルとしてバック
SELECTクエリフィールドFROM(サブクエリ)エイリアステーブルWHERE条件。
必要なエイリアスとしてサブクエリテーブル、そうでない場合は、このテーブルには、テーブル内のフィールドにアクセスすることはできません名前がありません
以下のような:学生情報照会やJava、Pythonの、英語、数学の成績、及び平均数学のスコアよりも大きい必要
最初のステップ:クエリのJava、Pythonの、英語、数学、すべての学年で
SELECTのJava、Pythonの、英語、数学、ID FROMもちろんAS course1
ステップ2:クエリ数学のスコアの平均
SELECT AVG(数学)FROMコース
第3のステップは:テーブルの使用は、学生情報照会、および学生の科目へのアクセス要求、およびスコアの要件に参加します
SELECT * FROM 学生 INNERは 、JOIN(SELECTのJava、Pythonの、英語、数学、ID FROMコース)AS course1 ON students.Id = course1.Id WHERE数学>(SELECT AVG(数学)FROMコース)。
クエリの概要導入されたバージョン:
-
長い別々のサブクエリの結果と同様に、次に後WHERE条件として
-
長い複数の列と同じサブクエリの結果は、 FROM後ろのテーブルのような二次のクエリ