Teradata 聯(lián)接

2018-01-11 15:41 更新

聯(lián)接用于組合來自多個表的記錄。 基于來自這些表的公共列/值來連接表。

有不同類型的聯(lián)接可用。

  • Inner Join
  • Left Outer Join
  • Right Outer Join
  • Full Outer Join
  • Self Join
  • Cross Join
  • Cartesian Production Join

內(nèi)部聯(lián)接

內(nèi)連接組合來自多個表的記錄,并返回兩個表中存在的值。

語法

以下是INNER JOIN語句的語法。

SELECT col1, col2, col3…. 
FROM  
Table-1 
INNER JOIN 
Table-2 
ON (col1 = col2) 
<WHERE condition>;

例子

考慮下面的員工表和工資表。

員工不名字JoinedDate部門生日
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

考慮下面的員工表和工資表。

SELECT A.EmployeeNo, A.DepartmentNo, B.NetPay 
FROM  
Employee A 
INNER JOIN 
Salary B 
ON (A.EmployeeNo = B. EmployeeNo);

當(dāng)執(zhí)行上述查詢時,它返回以下記錄。 員工105不包括在結(jié)果中,因?yàn)樗谛浇鸨碇袥]有匹配的記錄。

*** Query completed. 4 rows found. 3 columns returned. 
*** Total elapsed time was 1 second. 
 EmployeeNo   DepartmentNo     NetPay 
-----------  ------------   ----------- 
    101           1            36000 
    102           2            74000 
    103           2            83000 
    104           2            70000

OUTER JOIN

LEFT OUTER JOIN和RIGHT OUTER JOIN也合并了多個表的結(jié)果。

  • LEFT OUTER JOIN 返回左表中的所有記錄,并僅返回來自右表的匹配記錄。

  • RIGHT OUTER JOIN 返回右表中的所有記錄,并僅返回左表中匹配的行。

  • FULL OUTER JOIN 結(jié)合了LEFT OUTER和RIGHT OUTER JOINS的結(jié)果。 它從連接的表返回匹配和不匹配的行。

例子

以下是OUTER JOIN語句的語法。 您需要使用LEFT OUTER JOIN,RIGHT OUTER JOIN或FULL OUTER JOIN中的一個選項(xiàng)。

SELECT col1, col2, col3…. 
FROM  
Table-1 
LEFT OUTER JOIN/RIGHT OUTER JOIN/FULL OUTER JOIN 
Table-2 
ON (col1 = col2) 
<WHERE condition>;

例子

請考慮以下LEFT OUTER JOIN查詢的示例。 它返回來自Employee表的所有記錄和來自Salary表的匹配記錄。

SELECT A.EmployeeNo, A.DepartmentNo, B.NetPay 
FROM  
Employee A 
LEFT OUTER JOIN 
Salary B 
ON (A.EmployeeNo = B. EmployeeNo) 
ORDER BY A.EmployeeNo; 

當(dāng)執(zhí)行上述查詢時,它將產(chǎn)生以下輸出。 對于員工105,NetPay值為NULL,因?yàn)樗谛浇鸨碇袥]有匹配的記錄。

*** Query completed. 5 rows found. 3 columns returned. 
*** Total elapsed time was 1 second. 
 EmployeeNo  DepartmentNo     NetPay 
-----------  ------------   ----------- 
    101           1           36000 
    102           2           74000 
    103           2           83000 
    104           2           70000 
    105           3             ?

外部加入...

交叉連接將左表中的每一行連接到右表中的每一行。

例子

以下是CROSS JOIN語句的語法。

SELECT A.EmployeeNo, A.DepartmentNo, B.EmployeeNo,B.NetPay 
FROM  
Employee A 
CROSS JOIN 
Salary B 
WHERE A.EmployeeNo = 101 
ORDER BY B.EmployeeNo;

以下是CROSS JOIN語句的語法。...

*** Query completed. 4 rows found. 4 columns returned. 
*** Total elapsed time was 1 second. 
 EmployeeNo  DepartmentNo   EmployeeNo    NetPay 
-----------  ------------  -----------  ----------- 
    101           1            101         36000 
    101           1            104         70000 
    101           1            102         74000 
    101           1            103         83000

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號