Teradata SET运算符
2018-01-11 10:07 更新
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];
例子
考虑下面的员工表和工资表。
员工编号 | 名字 | 姓 | 入职日期 | 部门 | 生日 |
---|---|---|---|---|---|
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 |
员工编号 | 收入 | 扣除 | 净得工资 |
---|---|---|---|
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
以上内容是否对您有帮助:
更多建议: