Oracle中UNION 与UNION ALL的学习
[code]
1、UNION:并集,所有的内容都查询,重复的显示一次;

2、UNION ALL:并集,所有的内容都显示,包括重复的;

3、INTERSECT:交集,只显示重复的;

4、MINUS:差集,只显示对方没有的(跟顺序是有关系的)

两者都是对记录集操作,把来自许多SELECT语句的结果组合到一个结果集合中。不过值得注意的一点是,类型的一致性,既要满足,列于每个 SELECT语句的对应位置的被选择的列应具有相同的类型。(例如,被第一个语句选择的第一列应和被其它语句选择的第一列具有相同的类型。)


1. UNION语法结构:
2. SELECT ...
3. UNION [ALL]
4. SELECT ...
5. [UNION [ALL]
6. SELECT ...

UNION语法结构:
SELECT ...
UNION [ALL]
SELECT ...
[UNION [ALL]
SELECT ...


UNION 与 UNION ALL 的区别:
UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。但是,如果表数据量大,就可能导致用磁盘进行排序。
UNION ALL只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。

从效率上说,UNION ALL要比UNION快很多,重要的一点就是不需要排序。在考虑两
者如何使用更适合某一种场景,就要从做UNION的两张表上考虑了,如果不会出现
重复数据,就优先考虑UNION ALL。

[/code]