1.准备测试数据
准备测试表:test_minus_tblcreate table test_minus_tbl(
id varchar2(20),
name varchar2(50),
age int
);
alter table test_minus_tbl add constraint pk_minus_tbl primary key(id);
create sequence seq_test_minus_tbl increment by 1 start with 1 maxvalue 99999999 minvalue 1 nocycle nocache;
准备测试数据
insert into test_minus_tbl(id, name, age)values(seq_test_minus_tbl.nextval, 'lxl', 26);
insert into test_minus_tbl(id, name, age)values(seq_test_minus_tbl.nextval, 'lxl', 26);
insert into test_minus_tbl(id, name, age)values(seq_test_minus_tbl.nextval, 'lxl_01', 26);
insert into test_minus_tbl(id, name, age)values(seq_test_minus_tbl.nextval, 'lxl_02', 26);
insert into test_minus_tbl(id, name, age)values(seq_test_minus_tbl.nextval, 'lxl_01', 26);
insert into test_minus_tbl(id, name, age)values(seq_test_minus_tbl.nextval, 'lxl_02', 26);
2.进行测试
先进行查询全部:
select * from test_minus_tbl;
在介绍union,union all,minus,intersect,之前,必须要明确:参与的结果集必须要有相同的列数,并且类型要相同
minus的作用及用法,两个结果集相减
结果集去掉 name 字段 值为 lxl 的记录,并去重:
select t.name
from test_minus_tbl t
minus
select t1.name from test_minus_tbl t1 where t1.name = 'lxl';
结果如下图
union all的作用及用法,两个结果集合并,不去重
select t.name
from test_minus_tbl t
union all
select t1.name from test_minus_tbl t1;
结果如下图
union的作用及用法,两个结果集合并,并且去掉重复的记录,让重复的记录只显示一条
select t.name
from test_minus_tbl t
union
select t1.name from test_minus_tbl t1;
结果如下图
intersect的作用及用法,求交集
select t.name
from test_minus_tbl t
intersect
select t1.name from test_minus_tbl t1 where t1.name = 'lxl';
结果如下图