首页 > 数据库 > Oracle > Oracle中union与union all区别
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
------------------------
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
-------------------------
讲授
实践
实习
实验
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'
返回结果:
CODELABEL
--------------------------
讲授
实验
实习
实习
实践
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
------------------------
实习
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
------------------------
讲授
实验
在数据库中将两个结果集合并为一个我们可以用union和union all 关键字,但这两者从使用和效率上来说有所不同:
Union 在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。
而union all 只是简单的将两个结果合并后就返回。
从效率上来讲,union all 要比union快很多,所以如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使用union all。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/128936/viewspace-1117598/ ,如需转载,请注明出处,否则将追究法律责任。