SQL Server集合运算符
一、SQL Server Union (并集)。
-
简要: 将2条或多条SQL的查询结果合并成1个结果集返回。
-
SQL Server UNION 是一组集合操作,用于将两个SELECT语句的结果组合到一个结果集中,该结果集包括属于 UNION 中 SELECT 语句的所有行。
-
以下Union语法中的查询要求:
- 两个查询中列的数量必须相同。
- 相应列的数据类型必须相同或兼容。以第一个SELECT语句的列名称作为返回结果的列名称,如果数据类型不匹配, UNION 结果会从所有的SELECT语句中推测返回列的类型和长度。
-
默认情况下,UNION运算符从结果集中删除所有重复的行。但是,如果要保留重复的行,则需要明确的在后面指定ALL关键字。
-
UNION 和 UNION ALL 的示例。
SELECT column_name_a1, column_name_a2 FROM table_name_a UNION -- 或者 UNION ALL SELECT column_name_b1, column_name_b2 FROM table_name_b;
二、SQL Server Intersect (交集)。
-
简要: 将2条或多条SQL的查询结果获取查询结果集的共有结果集返回。
-
以下Intersect语法中的查询要求:
- 两个查询必须具有相同的列数和顺序。
- 相应列的数据类型必须相同或兼容。INTERSECT和UNION一样,它们都需要结果集A和结果集B拥有相同的结构, 即它们的列数要一致,且每列的数据类型也需要一致,否则没法进行比较。
-
不支持 INTERSECT运算符的 ‘ALL’ 版本。
-
INTERSECT的示例。
SELECT column_name_a1, column_name_a2 FROM table_name_a INTERSECT SELECT column_name_b1, column_name_b2 FROM table_name_b;
三、SQL Server Except (差积)。
-
简要: 作用在两个查询结果集,返回第一个结果集但不包含第二个结果集的所有行。
-
SQL Server EXCEPT 比较两个查询的结果集,并返回第一个查询中不是由第二个查询输出的不同行。 换句话说, EXCEPT 从一个查询结果中减去另一个查询的结果集。
-
以下EXCEPT语法中的查询要求:
- 两个查询中列的数量和顺序必须相同。
- 相应列的数据类型必须相同或兼容。 -
不支持 EXCEPT 运算符的 ‘ALL’ 版本。
-
EXCEPT的示例。
SELECT column_name_a1, column_name_a2 FROM table_name_a EXCEPT SELECT column_name_b1, column_name_b2 FROM table_name_b;