Oracle 四种结果集集合操作符命令 Union、Union All、Intersect、Minus

假设我们有一个表Student,包括以下字段与数据:
drop table student;
create table student
(
id int primary key,
name nvarchar2(50) not null,
score number not null
);

insert into student values(1,‘A’,78);
insert into student values(2,‘B’,76);
insert into student values(3,‘C’,89);
insert into student values(4,‘D’,90);
insert into student values(5,‘E’,73);
insert into student values(6,‘F’,61);
insert into student values(7,‘G’,99);
insert into student values(8,‘H’,56);
insert into student values(9,‘I’,93);
insert into student values(10,‘J’,90);

commit;

Union和Union All的区别:

--对于查询出来两个结果集_(求并集);求并集的指令:Union或Union all
select * from student where id < 4
union
select * from student where id > 2 and id < 6;
		左边是 Union 结果集:					右边的是:Union all 结果集:
			1 A 78									1 A 78
			2 B 76									2 B 76
			3 C 89									3 C 89
												3 C 89
			4 D 90									4 D 90
			5 E 73									5 E 73
--Union默认对重复的记录不再操作显示,同时进行默认规则的排序
--若需要对结果集中重复操作显示,则使用 Union all 指令
--可以看到,Union和Union All的区别之一在于对重复结果的处理。
--Union(求并集) 、Minus(求差集)及Intersect(求交集)的操作和基本一致 
  • Minus(求差集) 操作含义: 将在第一个集合中 减去 第二个集合中的记录,产生的结果集即差结果集
    或者说两个集合中不一样的元素所产生的集合结果。
    Intersect(求交集)恰恰相反 两个集合中共同拥有的元素所产生的 交集结果集。

注意集合操作符号有以下限制:

  1. 对与LOB,VARRAY 和嵌套表来说,集合操作符是无效的。
  2. 对long列来说,Union、Intersect、Minus操作符是无效的。
    集合操作的规范:
    -两个查询的 SELECT 列表必须在个数上匹配
    -第二个查询中的每个列的数据类型必须与第一个查询中相应列的数据类型匹配
    -可以使用括号来改变执行的顺序
    -ORDER BY 可以也只可以出现在整个语句的结尾。
    -除了 UNION ALL 以外,其余的三个操作符都会消除结果集中的重复行。
    -结果集使用第一个查询中的列名显示
    -默认情况下,除 UNION ALL 外,输出以升序进行排序
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值