📜  Teradata加入

📅  最后修改于: 2021-01-11 11:26:37             🧑  作者: Mango

Teradata加盟

连接用于合并多个表中的记录。根据公共列和这些表中的值连接表。

Teradata中提供了不同类型的联接。

  • 内部联接
  • 左外连接
  • 右外连接
  • 完全外部加入
  • 自我加入
  • 交叉连接
  • 笛卡尔生产加入

内部联接

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

句法

以下是INNER JOIN语句的语法。

SELECT col1, col2, col3?. 
FROM  
Table-1 
INNER JOIN 
Table-2 
ON (col1 = col2) 
;

考虑以下两个表,例如学生表和出勤表。

学生桌:

RollNo FirstName LastName BirthDate
1001 Mike Richard 1/2/1996
1002 Robert Williams 3/5/1995
1003 Peter Collin 4/1/1994
1004 Alexa Stuart 11/6/1995
1005 Robert Peterson 12/1/1997

出勤表:

RollNo present Absent %
1001 200 20 90%
1002 160 60 72%
1003 150 70 68%
1004 210 10 95%

以下查询将公用表Rollno上的学生表和出勤表联接在一起。每个表都分配有一个别名A和B,并使用正确的别名引用这些列。

SELECT A.RollNo, B.% 
FROM  
Student A 
INNER JOIN 
Attendance B   
ON (A.RollNo = B.RollNo);

执行上述查询后,将返回以下记录。由于出勤表中没有匹配的记录,因此Rollno 1005不包括在结果中。

 Rollno               %
1001                 90%
1002                 72%
1003                 68%
1004                 95%

外连接

左外部联接和右外部联接也合并了来自多个表的结果。

  • LEFT OUTER JOIN:它返回左侧表中的所有记录,而仅返回右侧表中的匹配记录。
  • 右外部联接:它返回右表中的所有记录,并且仅返回左表中的匹配行。
  • FULL OUTER JOIN:它合并了LEFT OUTER和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) 
;

考虑下面的LEFT OUTER JOIN查询示例。它返回学生表中的所有记录以及出勤表中的匹配记录。

FROM  
Student A 
LEFT OUTER JOIN 
Attendance B 
ON (A.RollNo = B.RollNo) 
ORDER BY A.RollNo;

执行上述查询后,将产生以下输出。对于学生1005,%值为NULL,因为出勤表中没有匹配的记录。

Rollno               %
1001                 90%
1002                 72%
1003                 68%
1004                 95%
1005                   -

交叉加入

交叉联接将左表中的每一行连接到右表中的每一行。

交叉联接是Teradata指定的联接,等效于产品联接。交叉联接中将没有“ ON”关键字。

句法

以下是CROSS JOIN语句的语法。

Following is the syntax of the CROSS JOIN statement.
SELECT col1, col2, col3?. 
FROM  
Table-1 
CROSS JOIN 
Table-2 
;

考虑以下CROSS JOIN查询示例。

SELECT A.RollNo, B.RollNo, B.% 
FROM  
Student A 
CROSS JOIN 
Attendance B 
WHERE A.RollNo = 1001 
ORDER BY B.RollNo;

执行上述查询后,将产生以下输出。学生表中的RollNo 1001与出勤表中的每条记录结合在一起。

Rollno            Rollno                           %
1001                1001                            90%
1001                1002                            72%
1001                1003                            68%
1001                1004                            95%