Teradata 联接

2018-01-11 15:41 更新

联接用于组合来自多个表的记录。 基于来自这些表的公共列/值来连接表。

有不同类型的联接可用。

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

内部联接

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

语法

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

当执行上述查询时,它返回以下记录。 员工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

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,因为它在薪金表中没有匹配的记录。

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

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号