logo

SQL |サブクエリ

SQL では、サブクエリは別のクエリ内のクエリとして簡単に定義できます。言い換えれば、サブクエリは別の SQL クエリの WHERE 句に埋め込まれたクエリであると言えます。サブクエリの重要なルール:

次のスキャナー
  • サブクエリはいくつかの SQL 句に配置できます。 どこ 句、HAVING 句、FROM 句。サブクエリは、SELECT、UPDATE、INSERT、DELETE ステートメントと式演算子で使用できます。これは、=、>、=、<=、Like 演算子などの等価演算子または比較演算子です。
  • サブクエリは、別のクエリ内のクエリです。外側のクエリは次のように呼ばれます。 メインクエリ 内部クエリは次のように呼ばれます サブクエリ
  • 通常、サブクエリに何もない場合、サブクエリが最初に実行されます。 相関関係 とともに メインクエリ 、相関関係がある場合、パーサーが決定を下します。 急いで どのクエリを実行するかについて 優先順位 そして、それに応じてサブクエリの出力を使用します。
  • サブクエリは括弧で囲む必要があります。
  • サブクエリは比較演算子の右側にあります。
  • 注文方法 指示 できない サブクエリで使用できます。 グルービー コマンドは、ORDER BY コマンドと同じ機能を実行するために使用できます。
  • 単一行サブクエリでは単一行演算子を使用します。複数行サブクエリでは複数行演算子を使用します。

構文: サブクエリには一般的な構文はありません。ただし、サブクエリは、次に示すように SELECT ステートメントで最も頻繁に使用されることがわかります。



SELECT column_name FROM table_name WHERE column_name expression operator ( SELECT COLUMN_NAME from TABLE_NAME WHERE ... );>

サンプルテーブル :

データベース

名前 ROLL_NO 位置 電話番号
ラム 101 チェンナイ 9988775566
ラージ 102 コインバトール 8877665544
サシ 103 マドゥライ 7766553344
処理 104 セイラム 8989898989
スマティ 105 カーンチープラム 8989856868

学生



雪と氷
名前 ROLL_NO セクション
処理 104
スマティ 105 B
ラージ 102

サンプルクエリ

:

  • DATABASE テーブルのセクションが A である生徒の NAME、LOCATION、PHONE_NUMBER を表示するには
Select NAME, LOCATION, PHONE_NUMBER from DATABASE WHERE ROLL_NO IN (SELECT ROLL_NO from STUDENT where SECTION=’A’);>
    説明 : 最初のサブクエリは STUDENT から SELECT ROLL_NO を実行します。ここで、SECTION='A' は、SECTION が 'A' である STUDENT テーブルから ROLL_NO を返します。次に、外部クエリがそれを実行し、ROLL_NO を持つ学生の DATABASE テーブルから NAME、LOCATION、PHONE_NUMBER を返します。内部サブクエリから返されます。出力:
名前 ROLL_NO 位置 電話番号
処理 104 セイラム 8989898989
ラージ 102 コインバトール 8877665544
  • クエリの挿入例:

表1: 学生1



名前 ROLL_NO 位置 電話番号
ラム 101 チェンナイ 9988773344
ラジュ 102 コインバトール 9090909090
処理 103 セイラム 8989898989

表 2: 学生 2

名前 ROLL_NO 位置 電話番号
ラージ 111 チェンナイ 8787878787
それまで 112 ムンバイ 6565656565
スリ 113 コインバトール 7878787878
  • Student2 を Student1 テーブルに挿入するには:
INSERT INTO Student1 SELECT * FROM Student2;>
  • 出力:
名前 ROLL_NO 位置 電話番号
ラム 101 チェンナイ 9988773344
ラジュ 102 コインバトール 9090909090
処理 103 セイラム 8989898989
ラージ 111 チェンナイ 8787878787
それまで 112 ムンバイ 6565656565
スリ 113 コインバトール 7878787878
  • Student1 テーブルとロール番号が同じで、場所がチェンナイである Student2 テーブルから学生を削除するには
DELETE FROM Student2 WHERE ROLL_NO IN ( SELECT ROLL_NO FROM Student1 WHERE LOCATION = ’chennai’);>
  • 出力:
1 row delete successfully.>
    Student2 テーブルを表示します。
名前 ROLL_NO 位置 電話番号
それまで 112 ムンバイ 6565656565
スリ 113 コインバトール 7878787878
  • Student1 テーブルの Raju、Ravi と同じ場所にある Student2 テーブルの学生の名前を geek に更新するには
UPDATE Student2 SET NAME=’geeks’ WHERE LOCATION IN ( SELECT LOCATION FROM Student1 WHERE NAME IN (‘Raju’,’Ravi’));>
  • 出力:
1 row updated successfully.>
    Student2 テーブルを表示します。
名前 ROLL_NO 位置 電話番号
それまで 112 ムンバイ 6565656565
オタク 113 コインバトール 7878787878