ITPub博客

首页 > 数据库 > Oracle > Oracle中union与union all区别

Oracle中union与union all区别

Oracle 作者:godannan 时间:2011-10-01 10:11:49 0 删除 编辑

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


 

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


 

另外还有其他的集合操作符,如Intersect和Minus的操作和Union基本一致,这里一起总结一下:


 

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


 

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


 

 


 

SELECT codevalue,codelabel FROM FW_CODELIST WHERE CODETYPE = 'SKLXM' AND codevalue<'004'
UNION 
SELECT codevalue,codelabel FROM FW_CODELIST WHERE CODETYPE = 'SKLXM' AND codevalue<'005' AND codevalue>'002'


 

返回结果:
CODEVALUE   CODELABEL
------------------------
001            讲授
002            实验
003            实习
004            实践


 

SELECT codelabel,codevalue FROM FW_CODELIST WHERE CODETYPE = 'SKLXM' AND codevalue<'004'
UNION 
SELECT codelabel,codevalue FROM FW_CODELIST WHERE CODETYPE = 'SKLXM' AND codevalue<'005' AND codevalue>'002'


 

返回结果:
CODEVALUE   CODELABEL
-------------------------
讲授            001
实践            004
实习            003
实验            002


 

SELECT codelabel,codevalue FROM FW_CODELIST WHERE CODETYPE = 'SKLXM' AND codevalue<'004'
UNION  ALL
SELECT codelabel,codevalue FROM FW_CODELIST WHERE CODETYPE = 'SKLXM' AND codevalue<'005' AND codevalue>'002'


 

返回结果:
CODELABEL    CODEVALUE
--------------------------
讲授            001
实验            002
实习            003
实习            003
实践            004


 

 
SELECT codelabel,codevalue FROM FW_CODELIST WHERE CODETYPE = 'SKLXM' AND codevalue<'004'
INTERSECT
SELECT codelabel,codevalue FROM FW_CODELIST WHERE CODETYPE = 'SKLXM' AND codevalue<'005' AND codevalue>'002'


 

返回结果:
CODELABEL    CODEVALUE
------------------------
实习            003


 

 
SELECT codelabel,codevalue FROM FW_CODELIST WHERE CODETYPE = 'SKLXM' AND codevalue<'004'
MINUS
SELECT codelabel,codevalue FROM FW_CODELIST WHERE CODETYPE = 'SKLXM' AND codevalue<'005' AND codevalue>'002'


 

返回结果:
CODELABEL    CODEVALUE
------------------------
讲授            001
实验            002


 

 


 

在数据库中将两个结果集合并为一个我们可以用union和union all 关键字,但这两者从使用和效率上来说有所不同:


 

Union 在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。


 

而union all 只是简单的将两个结果合并后就返回。


 

从效率上来讲,union all 要比union快很多,所以如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使用union all。


 

<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/128936/viewspace-1117598/,如需转载,请注明出处,否则将追究法律责任。

上一篇: Unix/Linux Commands
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-10-24

最新文章