📜  Teradata集运算符

📅  最后修改于: 2021-01-11 11:19:38             🧑  作者: Mango

Teradata集运算符

SET运算符组合来自多个SELECT语句的结果。这可能看起来类似于Joins,但是joins合并了来自不同表的列,而SET运算符合并了来自多行的行。

集合运算符规则

以下是指定Set运算符的以下规则,例如:

  • 每个SELECT语句的列数应相同。
  • 每个SELECT的数据类型必须兼容。
  • ORDER BY仅应包含在最终的SELECT语句中。

Teradata SQL集运算符

SQL支持以下集合运算符:

Set Operator Function
INTERSECT It returns result in rows that appear in all answer sets generated by the individual SELECT statements.
MINUS /
EXCEPT
The result is those rows returned by the first SELECT except for those also selected by the second SELECT.
UNION It combines the results of two or more SELECT statements.

1.联盟

UNION语句用于合并多个SELECT语句的结果。它忽略重复项。

句法

以下是UNION语句的基本语法。

SELECT col1, col2, col3... 
FROM  
 
[WHERE condition] 
UNION  

SELECT col1, col2, col3... 
FROM  
[WHERE condition];

将以下学生表视为T1,将出勤表视为T2。

RollNo FirstName LastName BirthDate
1001 Mike Richard 1/2/1996
1002 Robert Williams 3/5/1995
1003 Peter Collin 4/1/1994
1004 Alexa Stuart 11/6/1995
1005 Robert Peterson 12/1/1997
RollNo present Absent %
1001 200 20 90%
1002 160 60 72%
1003 150 70 68%
1004 210 10 95%

以下UNION查询结合了T1和T2表中的RollNo值。

SELECT RollNo 
FROM  
T1
UNION 

SELECT RollNo 
FROM  
T2;

执行查询时,它将给出以下输出,例如:

RollNo
1001
1002
1003
1004
1005

2. UNION ALL

UNION ALL语句类似于UNION语句。它合并了来自多个表的结果,包括重复的行。

句法

以下是UNION ALL语句的基本语法。

SELECT col1, col2, col3...
FROM  
 
[WHERE condition] 
UNION ALL 

SELECT col1, col2, col3...
FROM  
[WHERE condition];

以下是UNION ALL语句的示例。

SELECT RollNo 
FROM  
T1
UNION ALL 

SELECT RollNo 
FROM  
T2;

执行上述查询后,将产生以下输出。并且它也返回重复项。

RollNo
1001
1002
1003
1004
1005
1001
1002
1003
1004

3.相交

INTERSECT命令还用于合并来自多个SELECT语句的结果。

它从第一个SELECT语句返回与第二个SELECT语句中具有匹配项的行。

句法

以下是INTERSECT语句的基本语法。

SELECT col1, col2, col3... 
FROM  
[WHERE condition] INTERSECT SELECT col1, col2, col3... FROM
[WHERE condition];

以下是INTERSECT语句的示例。它返回两个表中都存在的RollNo值。

SELECT RollNo 
FROM  
T1
INTERSECT 

SELECT RollNo 
FROM  
T2;

执行上述查询后,将返回以下记录。 RollNo 1005被排除在外,因为它在T2表中不存在。

RollNo
1001
1002
1003
1004

4.减/除

MINUS / EXCEPT命令合并来自多个表的行并返回这些行,这些行在第一个SELECT中,但不在第二个SELECT中。它们都返回相同的结果。

句法

以下是MINUS语句的基本语法。

SELECT col1, col2, col3...
FROM  
[WHERE condition] MINUS SELECT col1, col2, col3... FROM
[WHERE condition];

以下是MINUS语句的示例。

SELECT RollNo 
FROM  
T1
MINUS 

SELECT RollNo 
FROM  
T2;

执行此查询时,将提供以下输出。

RollNo
1005