UNION 运算符将多个 SELECT 句的合成一个果集
(1)使用 UNION 须满足以下条件:
A:所有查询中必具有相同的构(即查询中的的列数和列的序必相同)。
B:对应列的数据型可以不同但是必兼容(所的兼容是指两种类型之可以转换,不能转换则报错)。也可以用转换为相同的数据型。
(当数据型不同根据数据级规则确定所生的数据sql中union多表合并型。如果型相同,但精度、小数位数或度不同,根据用于合并表达式的相同规则来确定果)
C:如果XML数据列必等价(所有列都必须类型化 XML 架构,或者型化),如果型化,些列必须类型化相同的 XML 架构集合。
(2)UNION果集
A:UNION 后的果集的列名与 第一个 SELECT 句的果集中的列名相同。另一个 SELECT 句的果集列名将被忽略。
B:UNION默果集中重记录,如果使用 ALL 关键果集中保留所有记录(保留重复记录
(3)注意点
A: Transact-SQL 句中可以使用多个 UNION 运算符
B:在使用了 UNION 运算符的各个 SELECT 句不能包含它自己的 ORDER BY 或 COMPUTE 子句。而只能在最果集(即最后一个 SELECT 句的后面)使用一个 ORDER BY 或 COMPUTE 子句。
C:在使用了 UNION 运算符的各个 SELECT 句中可以使用 GROUP BY 和 HAVING 子句。
D:默情况下,SQL Server 2005 从左向右包含 UNION 运算符的句求。可使用括号指定求值顺序。
例如,以下句并不等价:
/
* First statement. */
SELECT * FROM TableA
UNION ALL
( SELECT * FROM TableB
UNION
SELECT * FROM TableC
)
GO
/* Second statement. */
(SELECT * FROM TableA
UNION ALL
SELECT * FROM TableB
)
UNION
SELECT * FROM TableC)
GO
在第一个句中,将消除 TableB 与 TableC 的并集中的重行。而在集与 TableA 的并集中,将不消除重行。在第二个句中,TableA 与TableB 的并集中将包含重行,但在随后与 TableC 的并集中将消除重行。ALL 关键此表达式的最终结果没有影响

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。