Union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
Union All,对两个结果集进行并集操作,包括重复行,不进行排序;
另外还有其他的集合操作符,如Intersect和Minus的操作和Union基本一致,这里一起总结一下:
Intersect,对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;
Minus,对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。
SELECT codevalue,codelabel FROM
FW_CODELIST WHERE CODETYPE = 'SKLXM' AND
codevalue
UNION SELECT codevalue,codelabel FROM FW_CODELIST WHERE CODETYPE =
'SKLXM' AND codevalue
codevalue>'002'
返回结果:CODEVALUE CODELABEL
------------------------
001 讲授
002 实验
003 实习
004 实践
SELECT codelabel,codevalue FROM
FW_CODELIST WHERE CODETYPE = 'SKLXM' AND
codevalue
UNION SELECT codelabel,codevalue FROM FW_CODELIST WHERE CODETYPE =
'SKLXM' AND codevalue
codevalue>'002'
返回结果:CODEVALUE CODELABEL
-------------------------
讲授 001
实践 004
实习 003
实验 002
SELECT codelabel,codevalue FROM
FW_CODELIST WHERE CODETYPE = 'SKLXM' AND
codevalue
UNION ALL
SELECT codelabel,codevalue FROM FW_CODELIST WHERE CODETYPE =
'SKLXM' AND codevalue
codevalue>'002'
返回结果:CODELABEL
CODEVALUE
--------------------------
讲授 001
实验 002
实习 003
实习 003
实践 004
SELECT codelabel,codevalue FROM FW_CODELIST WHERE CODETYPE =
'SKLXM' AND codevalue
INTERSECT
SELECT codelabel,codevalue FROM FW_CODELIST WHERE CODETYPE =
'SKLXM' AND codevalue
codevalue>'002'
返回结果:CODELABEL
CODEVALUE
------------------------
实习 003
SELECT codelabel,codevalue FROM FW_CODELIST WHERE CODETYPE =
'SKLXM' AND codevalue
MINUS
SELECT codelabel,codevalue FROM FW_CODELIST WHERE CODETYPE =
'SKLXM' AND codevalue
codevalue>'002'
返回结果:CODELABEL
CODEVALUE
------------------------
讲授 001
实验 002
在数据库中将两个结果集合并为一个我们可以用union和union all 关键字,但这两者从使用和效率上来说有所不同:
Union 在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。
而union all 只是简单的将两个结果合并后就返回。
从效率上来讲,union all
要比union快很多,所以如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使用union all。