SQL Server 2005支持三种集合操作:UNION、EXCEPT和INTERSECT。而SQL Server 2000只支持UNION。
这些SQL运算符对应数学集合理论中定义的运算符。下面是应用了集合操作查询的语法:
[(]left_query[)] {union [all] | EXCEPT | INTERSECT} [(]right_query[)]
[order by <order_by_list>]
集合操作在两个输入中比较全部行。UNION返回包含两个输入中的所有行的结果集。如果未指定ALL选项,UNION将从结果集中去除重复行。EXCEPT返回出现在左输入但未出现在右输入的不重复行。INTERSECT返回在两个输入中都出现过的不重复行。
order by 子句不能用于集合操作的单个查询中。你只能在查询的最后制定order by 子句,但它被应用于集合操作的结果。
结果集的列名称是集合操作的左输入确定的。相应位置列的数据类型必须能够匹配或者隐式转换。最后要注意的一点是,集合操作中两个NULL值被认为是相等的。