Teradata教程

Teradata 加入

Join 用于合并来自多个表的记录。根据这些表中的公共列/值连接表。
有不同类型的连接可用。
Inner Join Left Outer Join Right Outer Join Full Outer Join Self Join Cross Join Cartesian Production Join

INNER JOIN

内连接合并来自多个表的记录并返回两个表中存在的值。

语法

以下是 INNER JOIN 语句的语法。
SELECT col1, col2, col3…. 
FROM  
Table-1 
INNER JOIN 
Table-2 
ON (col1 = col2) 
<WHERE condition>;

示例

考虑以下员工表和工资表。
EmployeeNo 名字 姓氏 JoinedDate 部门编号 出生日期
101 迈克 詹姆斯 2005/3/27 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
EmployeeNo 毛额 演绎 NetPay
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 上连接 Employee 表和 Salary 表。每个表都分配了一个别名 A 和 B,并使用正确的别名引用了列。
SELECT A.EmployeeNo, A.DepartmentNo, B.NetPay 
FROM  
Employee A 
INNER JOIN 
Salary B 
ON (A.EmployeeNo = B. EmployeeNo);
执行上述查询时,会返回以下记录。 Employee 105 不包含在结果中,因为它在 Salary 表中没有匹配的记录。
*** 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 也合并了多个表的结果。
LEFT OUTER JOIN 返回左表中的所有记录,仅返回右表中匹配的记录。 RIGHT OUTER JOIN 返回右表中的所有记录,只返回左表中匹配的行。 FULL OUTER JOIN 结合了 LEFT OUTER 和 RIGHT OUTER JOINS 的结果。它从连接的表中返回匹配和不匹配的行。

语法

以下是 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 查询示例。它返回 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; 
执行上述查询时,会产生以下输出。对于员工 105,NetPay 值为 NULL,因为它在 Salary 表中没有匹配的记录。
*** 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

Cross Join 将左表的每一行连接到右表的每一行。

语法

以下是 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;
执行上述查询时,会产生以下输出。 Employee 表中的 EmployeeNo 101 与 Salary 表中的每条记录连接。
*** 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
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4