- Teradata 教程
- Teradata - 主页
- Teradata 基础知识
- Teradata - 简介
- Teradata - 安装
- Teradata - 架构
- Teradata - 关系概念
- Teradata - 数据类型
- Teradata - 表
- Teradata - 数据操作
- Teradata - SELECT 语句
- 逻辑和条件运算符
- Teradata - SET 运算符
- Teradata - 字符串操作
- Teradata - 日期/时间函数
- Teradata - 内置函数
- Teradata - 聚合函数
- Teradata - 案例与合并
- Teradata - 主索引
- Teradata - 加入
- Teradata - 子查询
- Teradata 高级版
- Teradata - 表类型
- Teradata - 空间概念
- Teradata - 二级索引
- Teradata - 统计
- Teradata - 压缩
- Teradata - 解释
- Teradata - 哈希算法
- Teradata - 连接索引
- Teradata - 视图
- Teradata - 宏
- Teradata - 存储过程
- Teradata - 加入策略
- Teradata - 分区主索引
- Teradata - OLAP 函数
- Teradata - 数据保护
- Teradata - 用户管理
- Teradata - 性能调优
- Teradata - 快速加载
- Teradata - 多负载
- Teradata - 快速导出
- Teradata-BTEQ
- Teradata 有用资源
- Teradata - 问题与解答
- Teradata - 快速指南
- Teradata - 有用的资源
- Teradata - 讨论
Teradata - SET 运算符
SET 运算符组合多个 SELECT 语句的结果。这可能看起来类似于联接,但联接组合了多个表中的列,而 SET 运算符组合了多行中的行。
规则
每个 SELECT 语句的列数应该相同。
每个 SELECT 的数据类型必须兼容。
ORDER BY 只能包含在最终的 SELECT 语句中。
联盟
UNION 语句用于组合多个 SELECT 语句的结果。它忽略重复项。
句法
以下是 UNION 语句的基本语法。
SELECT col1, col2, col3… FROM <table 1> [WHERE condition] UNION SELECT col1, col2, col3… FROM <table 2> [WHERE condition];
例子
考虑以下员工表和工资表。
员工号 | 名 | 姓 | 加入日期 | 部门编号 | 出生日期 |
---|---|---|---|---|---|
101 | 麦克风 | 詹姆士 | 2005年3月27日 | 1 | 1980年1月5日 |
102 | 罗伯特 | 威廉斯 | 2007年4月25日 | 2 | 1983年3月5日 |
103 | 彼得 | 保罗 | 2007年3月21日 | 2 | 1983年4月1日 |
104 | 亚历克斯 | 斯图尔特 | 2008年2月1日 | 2 | 1984年11月6日 |
105 | 罗伯特 | 詹姆士 | 2008年1月4日 | 3 | 1984年12月1日 |
员工号 | 总的 | 扣除 | 网络支付 |
---|---|---|---|
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 类似,它组合了多个表(包括重复行)的结果。
句法
以下是 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 命令还用于组合多个 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 命令组合多个表中的行并返回第一个 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