当前位置:Gxlcms > mysql > Oracle中Union

Oracle中Union

时间:2021-07-01 10:21:17 帮助过:4人阅读

union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。 Union :对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序; Union All :对两个结果集进行并集操作,包括重

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

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

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

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

(SQLSERVER用EXCEPT运算符返回由EXCEPT运算符左侧的查询返回、而又不包含在右侧查询所返回的值中的所有非重复值)


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

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

示例:

--构造测试数据
select rownum, '名称' NM from dual connect by rownum <= 5
select rownum, '名称' from dual connect by rownum <= 3
 --测试数据内容
 ------A-------    ------B-------  
   ROWNUM    NM              ROWNUM   NM
 1  1       名称          1  1       名称  
 2  2       名称          2  2       名称
 3  3       名称          3  3       名称
 4  4       名称
 5	5	      名称
 
-- Union 对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
with A as
 (select rownum, '名称' NM from dual connect by rownum <= 5),
B as
 (select rownum, '名称' from dual connect by rownum <= 3)
select *
  from A
union
select * from B;
--结果示例:(共5条数据)
1	1	名称
2	2	名称
3	3	名称
4	4	名称
5	5	名称
-- Union All:对两个结果集进行并集操作,包括重复行,不进行排序;
with A as
 (select rownum, '名称' NM from dual connect by rownum <= 5),
B as
 (select rownum, '名称' from dual connect by rownum <= 3)
select *
  from A
union all
select * from B;
--结果示例(共8条数据)
1	1	名称
2	2	名称
3	3	名称
4	4	名称
5	5	名称
6	1	名称
7	2	名称
8	3	名称

-- Intersect:对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序; 
with A as
 (select rownum, '名称' NM from dual connect by rownum <= 5),
B as
 (select rownum, '名称' from dual connect by rownum <= 3)
select *
  from A
Intersect
select * from B;
--结果示例(3条相同数据)
1	1	名称
2	2	名称
3	3	名称

-- Minus:对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。 
with A as
 (select rownum, '名称' NM from dual connect by rownum <= 5),
B as
 (select rownum, '名称' from dual connect by rownum <= 3)
select *
  from A
Minus
select * from B;
--结果示例(2条不相同数据)
1	4	名称
2	5	名称

人气教程排行