Oracleのシリーズ七問い合わせ

サブクエリ構文

SELECT SELECT_LIST 
テーブルFROM 
WHERE exprのオペレータ
             (SELECT SELECT_LIST 
                テーブルFROM)。
  • サブクエリ(内部クエリ)がメインクエリの前に一度行われます。
  • メインクエリによってサブクエリの結果は、(外側のクエリ)を使用します。


例:

SELECT 
    LAST_NAMEを
FROM 
    従業員

    給与> SELECT 
            給与FROM 
            従業
            LAST_NAME = ' アベル' 
    )。
        
         

注意事項

  • サブクエリは、括弧内に含まれます。
  • 比較条件の右側にサブクエリ。
  • オペレータが行複数列サブクエリの複数に対応する、一行一列のサブクエリオペレータに対応します。

サブクエリ型



単一行のサブクエリ

  • 一列のみを返します。
  • 単列比較演算子を使用して。

例:

  • JOB_IDは141人の従業員、従業員の給料以上143従業員名、JOB_IDおよび賃金の数が同じで返さ

 

SELECT 
    LAST_NAME、
    JOB_ID、
    給与
FROM 
    従業

    JOB_ID = SELECTが
            JOB_ID FROM 
            従業
            EMPLOYEE_ID = 141 AND    給与> SELECT 
            給与FROM 
            従業
            EMPLOYEE_ID = 143 
    )。
        
         
    
        
         

サブクエリのグループ機能を使用します

  • 返し会社LAST_NAMEの従業員の最低賃金を、JOB_ID、および給与
SELECT 
    LAST_NAME、
    JOB_ID、
    給料
FROM 
    従業員

    給与= SELECT MIN (給与)
         FROM 
            従業員
    );
            



句のサブクエリをHAVING

  • まず、サブクエリの実装。
  • 戻り値は、HAVING句では、メインクエリになります。

 

  • トピック:クエリ番号50は最低賃金セクタ最低賃金と最低賃金の部門IDよりも大きいです
SELECT 
    DEPARTMENT_ID、
    MIN (給与)
 FROM 
    従業員が
GROUP  BYは
    DEPARTMENT_ID 
HAVING 
    MIN(給与)> SELECT 
            MIN (給与)
         FROM 
            社員
        WHERE 
            DEPARTMENT_ID =  50 
    )。

不正使用のサブクエリ



ヌルサブクエリの問題

SELECT 
    LAST_NAME、
    JOB_ID 
FROM 
    従業

    JOB_ID = SELECTが
            JOB_ID FROM 
            従業
            LAST_NAME = ' ハースを' 
    );
        
         



複数行のサブクエリ

  • 複数の行を返します。
  • 複数列比較演算子を使用して。

複数行のサブクエリを使用して、任意のオペレータ

例:JOB_IDより「IT_PROG」部門など低賃金の従業員の他の部門の任意のメンバーの復帰

              ジョブ番号、名前、JOB_ID、および給与

SELECT 
    EMPLOYEE_ID、
    LAST_NAME、
    JOB_ID、
    給与
FROM 
    従業員

    の給与< ANY SELECT 
            給与FROM 
            従業員
            のjob_id = ' IT_PROG '     のjob_id <> ' IT_PROG ' ; 
        
         
     



複数行のサブクエリで使用するすべての事業者

例:「IT_PROG」部門の従業員のjob_id以外のセクターに戻り、すべての賃金が低く、
            従業員番号、名前、給与およびJOB_ID

SELECT 
    EMPLOYEE_ID、
    LAST_NAME、
    JOB_ID、
    給与
FROM 
    従業員

    の給与< ALL SELECT 
            給与FROM 
            従業員
            のjob_id = ' IT_PROG '     のjob_id <> ' IT_PROG ' ; 
        
         
     



ヌルサブクエリの問題

SELECT 
    emp.last_name 
FROM 
    従業員はEMP 
WHERE 
    emp.employee_id 、NOT  INはSELECTが
            mgr.manager_id 
        FROM 
            従業員がMGR 
    )。



おすすめ

転載: www.cnblogs.com/loaderman/p/11738014.html