Teradata - 連線



JOIN 用於組合來自多個表中的記錄。表根據這些表中的公共列/值進行連線。

有多種型別的 JOIN 可用。

  • 內連線
  • 左外連線
  • 右外連線
  • 全外連線
  • 自連線
  • 交叉連線
  • 笛卡爾積連線

INNER JOIN

內連線組合來自多個表中的記錄,並返回同時存在於兩個表中的值。

語法

以下是 INNER JOIN 語句的語法。

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

示例

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

員工編號 入職日期 部門編號 出生日期
101 Mike James 3/27/2005 1 1/5/1980
102 Robert Williams 4/25/2007 2 3/5/1983
103 Peter Paul 3/21/2007 2 4/1/1983
104 Alex Stuart 2/1/2008 2 11/6/1984
105 Robert James 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

以下查詢根據公共列 EmployeeNo 連線員工表和薪資表。每個表都分配了一個別名 A 和 B,列以正確的別名引用。

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

執行上述查詢時,它將返回以下記錄。由於員工 105 在薪資表中沒有匹配的記錄,因此不包含在結果中。

*** 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

外連線

LEFT OUTER JOIN 和 RIGHT OUTER JOIN 也組合來自多個表的結果。

  • LEFT OUTER JOIN 返回左側表的所有記錄,並僅返回右側表的匹配記錄。

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

  • FULL OUTER JOIN 組合 LEFT OUTER JOIN 和 RIGHT OUTER JOIN 的結果。它返回連線表中的匹配行和不匹配行。

語法

以下是 OUTER JOIN 語句的語法。您需要使用 LEFT OUTER JOIN、RIGHT OUTER JOIN 或 FULL OUTER JOIN 中的一個選項。

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 查詢的示例。它返回員工表中的所有記錄以及薪資表中的匹配記錄。

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

執行上述查詢時,它將產生以下輸出。對於員工 105,NetPay 值為 NULL,因為它在薪資表中沒有匹配的記錄。

*** 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;

執行上述查詢時,它將產生以下輸出。員工表中的 EmployeeNo 101 與薪資表中的每個記錄都連線。

*** 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
廣告
© . All rights reserved.