Teradata - 集合運算子



集合運算子組合來自多個 SELECT 語句的結果。這可能看起來類似於連線,但連線組合來自多個表的列,而集合運算子組合來自多行的行。

規則

  • 每個 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];

示例

考慮以下員工表和薪資表。

員工編號 名字 姓氏 入職日期 部門編號 出生日期
101 邁克 詹姆斯 3/27/2005 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
員工編號 總額 扣除額 淨收入
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 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 
廣告

© . All rights reserved.