ORACLE_OCP之SQL_子查詢

XiaoHG_CSDN發表於2020-12-20

ORACLE_OCP之SQL_子查詢

  • 子查詢語法:
    • 子查詢(內部查詢)在主查詢(外部查詢)之前執行
    • 子查詢的結果由主查詢使用
  • 子查詢的規則和準則:
    • 將子查詢括在括號中
    • 將子查詢放在比較條件的右側,以提高可讀性,(但是,子查詢可以出現在比較運算子的任何一側)
    • 將單行運算子用於單行子查詢,將多行運算子用於多行子查詢

//栗子:找出入職日期大於Davies入職日期的人
SELECT * FROM EMPLOYEES WHERE HIRE_DATE > (SELECT HIRE_DATE FROM EMPLOYEES WHERE LAST_NAME=‘Davies’);

  • 單行子查詢:

    • 只返回一行
    • 使用單行比較運算子在這裡插入圖片描述
  • 子查詢中的HAVING子句

    • Oracle伺服器首先執行子查詢
    • Oracle伺服器將結果返回到主查詢的HAVING子句中

    SELECT department_id, MIN(salary)
    FROM employees
    GROUP BY department_id
    HAVING MIN(salary) >
    (SELECT MIN(salary)
    FROM employees
    WHERE department_id = 30);

  • 多行子查詢:

    • 返回多行
    • 使用多行比較運算子
      在這裡插入圖片描述
  • 多列子查詢

    • 多列子查詢將多個列返回到外部查詢
    • 多列比較中的列比較可以成對或非成對
    • 也可以在SELECT語句的FROM子句中使用多列子查詢

    //栗子:顯示每個部門中薪水最低的所有員工
    SELECT first_name, department_id, salary
    FROM employees
    WHERE (salary, department_id) IN
    (SELECT min(salary), department_id
    FROM employees
    GROUP BY department_id)
    ORDER BY department_id;

相關文章