codecamp

Teradata SET运算符

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 
Teradata 逻辑和条件运算符
Teradata 字符串操作
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }