Teradata - SET 运算符
SET 运算符组合来自多个 SELECT 语句的结果。这可能看起来类似于连接,但连接组合来自多个表的列,而 SET 运算符组合来自多个行的行。
规则
每个 SELECT 语句的列数应该相同。
每个 SELECT 的数据类型必须兼容。
ORDER BY 应该仅包含在最终 SELECT 语句中。
UNION
UNION 语句用于组合来自多个 SELECT 语句的结果。它会忽略重复项。
语法
以下是 UNION 语句的基本语法。
SELECT col1, col2, col3… FROM <table 1> [WHERE condition] UNION SELECT col1, col2, col3… FROM <table 2> [WHERE condition];
示例
考虑以下员工表和工资表。
EmployeeNo | FirstName | LastName | JoinedDate | DepartmentNo | BirthDate |
---|---|---|---|---|---|
101 | Mike | James | 3/27/2005 | 1 | 1/5/1980 |
102 | Robert | Williams | 4/25/2007 | 2 | 3/5/1983 |
103 | Peter | Paul | 3/21/2007 | 2 | 4/1/1983 |
104 | Alex | Stuart | 2/1/2008 | 2 | 11/6/1984 |
105 | Robert | James | 1/4/2008 | 3 | 12/1/1984 |
EmployeeNo | Gross | Deduction | NetPay |
---|---|---|---|
101 | 40,000 | 4,000 | 36,000 |
102 | 80,000 | 6,000 | 74,000 |
103 | 90,000 | 7,000 | 83,000 |
104 | 75,000 | 5,000 | 70,000 |
以下 UNION 查询将 Employee 和 Salary 表中的 EmployeeNo 值组合在一起。
SELECT EmployeeNo FROM Employee UNION SELECT EmployeeNo FROM Salary;
执行查询时,会产生以下输出。
EmployeeNo ----------- 101 102 103 104 105
UNION ALL
UNION ALL 语句与 UNION 类似,它将来自多个表(包括重复行)的结果组合在一起。
语法
以下是 UNION ALL 语句的基本语法。
SELECT col1, col2, col3… FROM <table 1> [WHERE condition] UNION ALL SELECT col1, col2, col3… FROM <table 2> [WHERE condition];
示例
以下是 UNION ALL 语句的示例。
SELECT EmployeeNo FROM Employee UNION ALL SELECT EmployeeNo FROM Salary;
执行上述查询时,会产生以下输出。您可以看到它还返回了重复项。
EmployeeNo ----------- 101 104 102 105 103 101 104 102 103
INTERSECT
INTERSECT 命令也用于合并多个 SELECT 语句的结果。它返回第一个 SELECT 语句中与第二个 SELECT 语句有对应匹配的行。换句话说,它返回两个 SELECT 语句中都存在的行。
语法
以下是 INTERSECT 语句的基本语法。
SELECT col1, col2, col3… FROM <table 1> [WHERE condition] INTERSECT SELECT col1, col2, col3… FROM <table 2> [WHERE condition];
示例
以下是 INTERSECT 语句的示例。它返回两个表中都存在的 EmployeeNo 值。
SELECT EmployeeNo FROM Employee INTERSECT SELECT EmployeeNo FROM Salary;
执行上述查询时,将返回以下记录。EmployeeNo 105 被排除,因为它不存在于 SALARY 表中。
EmployeeNo ----------- 101 104 102 103
MINUS/EXCEPT
MINUS/EXCEPT 命令将多个表中的行组合起来,并返回第一个 SELECT 中存在但不在第二个 SELECT 中的行。它们都返回相同的结果。
语法
以下是 MINUS 语句的基本语法。
SELECT col1, col2, col3… FROM <table 1> [WHERE condition] MINUS SELECT col1, col2, col3… FROM <table 2> [WHERE condition];
示例
以下是 MINUS 语句的示例。
SELECT EmployeeNo FROM Employee MINUS SELECT EmployeeNo FROM Salary;
当执行此查询时,它返回以下记录。
EmployeeNo ----------- 105