サブクエリ構文
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 )。