SET 操作符将多个查询用 SET 操作符联接组成一个新的查询
排序
SET运算符:
union 查询结果的并集,去重
union all 查询结果的并集,不去重
intersect 查询结果的交集
minus 查询结果的差集
示例:
首先创建两个表:
create table emp1
as
select * from employees
where department _id in(70,80)
create table emp2
as
select * from employees
where department _id in(80,90)
select employee _id “id” ,department_id, 2 as “num”
from emp1
union
select employee _id, department_id ,1
from emp2
order by 3
注意问题:
原则 在select列表中的 列名和表达式 在数量和数据类型上要相对应。
排序问题:默认的排序是按照 第一列数值 升序排列
可以在语句的最后自定义指明列,当然也可以在每一个查询结果的后面自定义一个虚拟的列专门用来排序 数字 as“列别名”
在语句的最后指明 order by 列名。
order by 语句也只能出现在语句的最后,可以使用第一个查询中的列名,别名,或相对位置(自定义虚拟列)。
注意:对于自定义的虚拟列 指明其所在第几列即可。
column 虚拟列别名 noprint;–不打印自定义的排序虚拟列。
1,除 UNION ALL之外,系统会自动将重复的记录删除 2,系统将第一个查询的列名显示在输出中 3,除 UNION ALL之外,系统自动按照第一个查询中的第一个列的升序排列
SELECT department_id, TO_NUMBER(null) location,hire_date FROM employees UNION SELECT department_id, location_id, TO_DATE(null) FROM departments;