Oracle集合操作

时间:2022-12-23 05:41:46

在Oracle中提供了三种类型的集合操作: 并(UNION)、交(INTERSECT)、差(MINUS)

  • UNION:将多个查询的结果组合到一个查询结果之中,并去掉反复值
  • UNION ALL:将多个查询结果组合到一个查询结果中。可是包括反复值
  • INTERSECT:返回多个查询结果同样的部分
  • MINUS:返回两个查询结果的差集

首先,创建还有一个表 emp10

-- 创建反复数据表 emp10
create table emp10 as (select * from emp where deptno = 10);

查看emp10 和 emp 表数据项,emp10 共同拥有3条记录。emp表有14条记录。

select * from emp10;

Oracle集合操作

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

select * from emp;

Oracle集合操作

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

union 多个结果并集,并去掉反复值

select * from emp10
union
select * from emp

Oracle集合操作

union all 取并集且不去除反复项

select * from emp10
union all
select * from emp

Oracle集合操作

intersect 返回多个查询结果同样的部分

select * from emp10
intersect
select * from emp;

Oracle集合操作

minus 取差集

select * from emp
minus
select * from emp10;

Oracle集合操作

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

换个写法

select * from emp10
minus
select * from emp;

Oracle集合操作

通过换写法之后的查询结果,能够看出。minus取的是第一个集合中有但第二个集合中没有的记录。