[Oracle数据库学习]十五、SET运算符
D9
SET操作符
UNION(并集):返回两个查询的结果集的并集;
UNION ALL:返回两个查询的结果集的并集以及两个结果集的重复部分(不去重);
INTERSECT(交集):返回两个结果集的交集;
MINUS(补集):返回两个结果集的补集。
UNION操作符
SELECT employee_id, job_id FROM employees UNION SELECT employee_id, job_id FROM job_history;
UNION 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;
INTERSECT 操作符
SELECT employee_id, job_id FROM employees INTERSECT SELECT employee_id, job_id FROM job_history;
MINUS 操作符
SELECT employee_id,job_id FROM employees MINUS SELECT employee_id,job_id FROM job_history;
使用SET操作符注意事项
两个结果集的SELECT列表中的列名和表达式的数量和数据类型要对应一致;
示例1:
SELECT department_id, TO_NUMBER(null) location, hire_date FROM employees UNION SELECT department_id, location_id, TO_DATE(null) FROM departments;
示例2:
SELECT employee_id, job_id, salary FROM employees UNION SELECT employee_id, job_id,0 FROM job_history;
括号可以改变执行的顺序;
ORDER BY子句:
1)只能在语句的最后出现
2)可以使用第一个查询中的列名、别名或相对位置。
使用SET操作符的查询结果
除UNION ALL之外,系统会自动将重复的记录删除;
系统将第一个查询的列名显示在输出中;
除UNION ALL之外,系统自动按照第一个查询中的第一个列的升序排列。
使用相对位置排序
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;
注:这里设置了一个不输出的列a_dummy,三个SELECT语句分别指定该列为3/1/2,最后按照该列排序(第一列是My dream)。
总结:
本节介绍SET(集合)操作符:
1)使用UNION(并集去重)、UNION ALL(并集不去重)、INTERSECT(交集)、MINUS(补集)操作符;
2)使用ORDER BY对结果集排序。
欢迎大家评论交流,发现博文中存在的问题一定要留言哦