将两个或更多查询的结果组合为单个结果集,该结果集包含联合查询中的所有查询的全部行。这与使用联接组合两个表中的列不同。
使用 UNION 组合两个查询的结果集的两个基本规则是:
{ < query specification > | ( < query expression > ) }
UNION [ ALL ]
< query specification | ( < query expression > )
[ UNION [ ALL ] < query specification | ( < query expression > )
[ ...n ] ]
< query_specification > | ( < query_expression > )
是查询规范或查询表达式,用以返回与另一个查询规范或查询表达式所返回的数据组合的数据。作为 UNION 运算一部分的列定义可以不相同,但它们必须通过隐性转换实现兼容。
下表说明数据类型与相应 (ith) 列的选项的比较规则。
ith 列的数据类型 | 结果表中 ith 列的数据类型 |
---|---|
非数据兼容类型(数据转换不由 Microsoft® SQL Server™ 隐性处理)。 | SQL Server 返回的错误。 |
长度为 L1 和 L2 的固定长度 char。 | 长度与 L1 和 L2 中较长的那个相等的固定长度 char。 |
长度为 L1 和 L2 的固定长度 binary。 | 长度与 L1 和 L2 中较长的那个相等的固定长度 binary。 |
任一列或两列都是可变长度 char。 | 长度与为 ith 列指定的最大长度相等的可变长度 char。 |
任一列或两列都是可变长度 binary。 | 长度与为 ith 列指定的最大长度相等的可变长度 binary。 |
两列都是数字数据类型(如 smallint、int、float、money)。 | 与两列的最大精度相等的数据类型。例如,如果表 A 的 ith 列是 int 类型,表 B 的 ith 列是 float 类型,则 ith 列在结果表中的数据类型是 float,因为 float 比 int 更精确。 |
两列的描述都指定 NOT NULL。 | 指定 NOT NULL。 |
UNION
指定组合多个结果集并将其作为单个结果集返回。
ALL
在结果中包含所有的行,包括重复行。如果没有指定,则删除重复行。