PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

SET操作符(UNION/UNIONALL/INTERSECT/MINUS)

原创
2016-06-07 16:09:52 947浏览

Union因为要进行重复值扫描,所以效率低。如果合并没有刻意要删除重复行,那么就使用Union All 两个要联合的SQL语句 字段个数必须一样,而且字段类型要相容(一致); 如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union

Union因为要进行重复值扫描,所以效率低。如果合并没有刻意要删除重复行,那么就使用Union All

两个要联合的SQL语句 字段个数必须一样,而且字段类型要“相容”(一致);

如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字。union(或称为联合)的作用是将多个结果合并在一起显示出来。

union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。


Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;

Union All:对两个结果集进行并集操作,包括重复行,不进行排序;

Intersect:对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;

Minus:对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。


可以在最后一个结果集中指定Order by子句改变排序方式。

例如:
建两张表:s1,s2
create table s1
(
id number(10),
name varchar2(20),
age number(10)
)

create table s2
(
id number(10),
name varchar2(20),
age number(10)
)

插入数据:
insert into s1 values(1,'刘备',51);
insert into s1 values(1,'刘德华',54);
insert into s1 values(3,' 张学友',54);
insert into s1 values(4,'黎明',54);

insert into s2 values(1,'刘备',51);
insert into s2 values(3,' 张飞',52);
insert into s2 values(4,'关羽',53);

1、Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
select * from s1
union
select * from s2;

得到结果集:

ID NAME AGE
1 1 刘备 51
2 1 刘德华 54
3 3 张飞 52
4 3 张学友 54
5 4 关羽 53
6 4 黎明 54

2、Union All:对两个结果集进行并集操作,包括重复行,不进行排序;
select * from s1
union all
select * from s2;

得到结果集:

ID NAME AGE
1 1 刘备 51
2 1 刘德华 54
3 3 张学友 54
4 4 黎明 54
5 1 刘备 51
6 3 张飞 52
7 4 关羽 53

3、Intersect:对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;
select * from s1
Intersect
select * from s2;

得到结果集:

ID NAME AGE
1 1 刘备 51

4、Minus:对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。
select * from s1
Minus
select * from s2;

得到结果集:

ID NAME AGE
1 1 刘德华 54
2 3 张学友 54
3 4 黎明 54
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。