ORACLE-サブクエリ
2316 ワード
1つのSQL文セクションに含まれる別のSELECT文のため、2回のクエリが必要です.
1回のクエリで可能な結果を解決
用語
Main-QueryまたはOuter-Query
sub-QueryまたはInner-Queryの2対は同じ意味です.
特長
かっこで囲まなければなりません.
サブクエリは、メインクエリの次の部分に配置できます.
1)SELECT/DELETE/UPDATE文のFROMとWHERE節
2)SELECT文のHAVING節
3)INSERT文INTO節
4)UPDATE文のSET節
種類
<1>1行サブクエリ
-サブクエリの実行結果は、1つのカラムと1つのローのクエリのみを返します.
(1つのデータのみを返すクエリ)
-サブクエリの実行結果は、1つのコラムと複数行のクエリを返します.
(複数のデータのみを返すクエリ)
1行サブクエリの作成(1 row,1 column)
*WHEREの後に2つの表を関連付ける(重複する)コラム名を入力し、カッコサブクエリで一致する必要があるコラム名を入力します(2つは異なる場合があります)+表名を入力し、必要な条件をエクスポートします.
異なるテーブルでは、後ろのカラム名に2つのテーブルを接続するカラム名を含める必要があります...?確認してください**
Q.サブクエリを使用して「SMITH」の部門名を出力します.
サブクエリを無効にすると、
-->このプロシージャを1回の実行としてエクスポートします.
SQL> SELECT dname
2 FROM dept
3 WHERE deptno=(SELECT deptno FROM emp WHERE ename='SMITH');
複数行のサブクエリを作成します(複数の行と列があるため、=では比較できません)。
Q.従業員3000人の部署と同じ部署で働いている従業員の名前、給与、部署番号を印刷してください.
部門を比較するので、部門番号で見ます!
1コラム2うまく書けないのでinで囲みます
1 SELECT ename, sal, deptno
2 FROM emp
3* WHERE deptno IN(SELECT deptno FROM emp WHERE sal>=3000)
EX)自分のトップ上司が「KING」の社員の名前と給料を印刷してください.>SELECT ename,sal
FROM emp
WHERE mgr = (SELECT empno FROM emp WHERE ename='KING');
whereセクションの後に一致するコラム名mgr=empnoなので、括弧内にmgrにマッチするempnoを求める条件を書き直し、enameを書くにはKINGの条件でなければなりません
EX)「SALES」部門で働いているすべての従業員の名前と給料を印刷します.
>SELECT ename, sal
FROM emp
WHERE deptno = (SELECT deptno FROM dept WHERE dname='SALES');
サブクエリにWHEREセクションのコラム名が属するテーブル名を記録!!Reference
この問題について(ORACLE-サブクエリ), 我々は、より多くの情報をここで見つけました https://velog.io/@jeongmmmn/ORACLE-서브-쿼리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol