第十三章 SET運算符
1.SET 操作符:UNION / UNION ALL INTERSECT MINUS
2.UNION 操作符返回兩個查詢的結果集的並集
SELECT employee_id, job_id
FROM employees
UNION
SELECT employee_id, job_id
FROM job_history;
2.1UNION ALL 操作符:返回兩個查詢的結果集的並集。對於兩個結果集的重複部分,不去重。
SELECT employee_id, job_id, department_id
FROM employees
UNION ALL
SELECT employee_id, job_id, department_id
FROM job_history
ORDER BY employee_id;
3.INTERSECT 操作符返回兩個結果集的交集
SELECT employee_id, job_id
FROM employees
INTERSECT
SELECT employee_id, job_id
FROM job_history;
4.MINUS操作符:返回兩個結果集的差集
SELECT employee_id,job_id
FROM employees
MINUS
SELECT employee_id,job_id
FROM job_history;
5.使用 SET 操作符注意事項
在SELECT 列表中的列名和表達式在數量和數據類型上要相對應
括號可以改變執行的順序
ORDER BY 子句:
只能在語句的最後出現
可以使用第一個查詢中的列名, 別名或相對位置
除 UNION ALL之外,系統會自動將重複的記錄刪除
系統將第一個查詢的列名顯示在輸出中
除 UNION ALL之外,系統自動按照第一個查詢中的第一個列的升序排列
6.匹配各SELECT 語句舉例
SELECT department_id, TO_NUMBER(null)
location, hire_date
FROM employees
UNION
SELECT department_id, location_id, TO_DATE(null)
FROM departments;
SELECT employee_id, job_id,salary
FROM employees
UNION
SELECT employee_id, job_id,0
FROM job_history;
使用相對位置排序舉例
COLUMN a_dummy NOPRINT
SELECT 'sing' AS "My dream", 3 a_dummy
FROM dual
UNION
SELECT 'I`d like to teach', 1
FROM dual
UNION
SELECT 'the world to', 2
FROM dual
ORDER BY 2;