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];

示例

考虑以下员工表和工资表。
EmployeeNo 名字 姓氏 JoinedDate 部门编号 出生日期
101 迈克 詹姆斯 2005/3/27 1 1/5/1980
102 罗伯特 威廉姆斯 4/25/2007 2 3/5/1983
103 彼得 保罗 3/21/2007 2 4/1/1983
104 亚历克斯 斯图尔特 2/1/2008 2 11/6/1984
105 罗伯特 詹姆斯 1/4/2008 3 12/1/1984
EmployeeNo 毛额 演绎 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,它合并来自多个表(包括重复行)的结果。

语法

以下是 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 
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4