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

例子

考虑下面的员工表和工资表。

员工编号名字入职日期部门生日
101MikeJames3/27/200511/5/1980
102RobertWilliams4/25/200723/5/1983
103PeterPaul3/21/200724/1/1983
104AlexStuart2/1/2008211/6/1984
105RobertJames1/4/2008312/1/1984
员工编号收入扣除净得工资
10140,0004,00036,000
10280,0006,00074,000
10390,0007,00083,000
10475,0005,00070,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 
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号