Teradata SET運算符

2018-01-11 10:07 更新

SET運算符合并多個SELECT語句的結(jié)果。 這可能看起來類似于連接,但連接組合來自多個表的列,而SET運算符組合來自多個行的行。

規(guī)則

每個SELECT語句的列數(shù)應(yīng)該相同。
每個SELECT的數(shù)據(jù)類型必須兼容。
ORDER BY應(yīng)該只包含在最終的SELECT語句中。

UNION

UNION語句用于組合多個SELECT語句的結(jié)果。 它忽略重復(fù)。

語法

下面是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;

執(zhí)行查詢時,將生成以下輸出。

EmployeeNo 
----------- 
   101 
   102 
   103 
   104 
   105

UNION ALL

UNION ALL語句與UNION類似,它合并來自多個表(包括重復(fù)行)的結(jié)果。

例子

以下是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;

當(dāng)執(zhí)行上述查詢時,它將產(chǎn)生以下輸出。 你可以看到它也返回重復(fù)。

 EmployeeNo 
----------- 
    101 
    104 
    102 
    105 
    103 
    101 
    104 
    102 
    103

INTERSECT

INTERSECT命令也用于組合多個SELECT語句的結(jié)果。 它返回在第二個SELECT語句中具有相應(yīng)匹配的第一個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; 

當(dāng)執(zhí)行上述查詢時,它返回以下記錄。 EmployeeNo 105被排除,因為它不存在于SALARY表中。

EmployeeNo 
----------- 
   101 
   104 
   102 
   103 

MINUS / EXCEPT

MINUS / EXCEPT命令組合多個表中的行,并返回第一個SELECT但不包含第二個SELECT的行。 它們都返回相同的結(jié)果。

例子

以下是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;

執(zhí)行此查詢時,它返回以下記錄。

EmployeeNo 
----------- 
   105 
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號