oracle中 unino,union all,minus,intersect的用法

来源:互联网 发布:yum install mysql 编辑:程序博客网 时间:2024/05/02 03:00

1.准备测试数据

准备测试表:test_minus_tbl
create 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 tminusselect t1.name from test_minus_tbl t1 where t1.name = 'lxl';
结果如下图


union all的作用及用法,两个结果集合并,不去重

select t.name  from test_minus_tbl tunion allselect t1.name from test_minus_tbl t1;
结果如下图



union的作用及用法,两个结果集合并,并且去掉重复的记录,让重复的记录只显示一条

select t.name  from test_minus_tbl tunionselect t1.name from test_minus_tbl t1;
结果如下图



intersect的作用及用法,求交集

select t.name  from test_minus_tbl tintersectselect t1.name from test_minus_tbl t1 where t1.name = 'lxl';
结果如下图










0 0
原创粉丝点击