Teradata 简明教程
Teradata - SET Operators
集合运算符结合了来自多个 SELECT 语句的结果。这可能看起来类似于联接,但联接合并了来自多个表的列,而集合运算符合并了来自多行中的行。
UNION
UNION 语句用于结合来自多个 SELECT 语句的结果。它忽略了重复项。
Syntax
以下是 UNION 语句的基本语法。
SELECT col1, col2, col3…
FROM
<table 1>
[WHERE condition]
UNION
SELECT col1, col2, col3…
FROM
<table 2>
[WHERE condition];
Example
考虑以下员工表和薪资表。
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,它结合了来自多个表的包括重复行在内的结果。
INTERSECT
INTERSECT 命令也用于结合来自多个 SELECT 语句的结果。它返回了在第二个 SELECT 语句中具有对应匹配项的第一个 SELECT 语句中的行。换句话说,它返回了同时存在于这两个 SELECT 语句中的行。