[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对结果集排序。

 

posted @ 2020-07-21 17:56  workingdiary  阅读(153)  评论(0)    收藏  举报