Teradata 连接

2025年3月17日 | 阅读 3 分钟

Join 用于组合来自多个表的记录。表根据这些表的公共列和值进行连接。

Teradata 中有不同类型的 Join 可用。

  • Inner Join
  • 左外连接
  • 右外连接
  • 全外连接
  • Self Join
  • 交叉连接
  • 笛卡尔积连接

INNER JOIN (内连接)

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

语法

以下是 INNER JOIN 语句的语法。

示例

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

Student 表

学号名字姓氏出生日期
1001迈克Richard1/2/1996
1002Robert威廉姆斯3/5/1995
1003彼得科林4/1/1994
1004Alexa斯图尔特11/6/1995
1005Robert彼得森12/1/1997

出勤表

学号出席%
10012002090%
10021606072%
10031507068%
10042101095%

以下查询将学生表和出勤表连接到公共列 Rollno。每个表都被分配了一个别名 A 和 B,并且使用正确的别名引用这些列。

执行以上查询后,它将返回以下记录。学号 1005 未包含在结果中,因为它在出勤表中没有匹配的记录。

OUTER JOIN

左外连接和右外连接也组合了来自多个表的结果。

  • 左外连接:它返回左表中的所有记录,并且仅返回右表中匹配的记录。
  • 右外连接:它返回右表中的所有记录,并且仅返回左表中匹配的行。
  • 全外连接:它组合了来自左外连接和右外连接的结果。它从连接表中返回匹配和不匹配的行。

语法

以下是 OUTER JOIN 语句的语法。我们需要从左外连接、右外连接或全外连接中选择一个选项。

示例

考虑以下左外连接查询的示例。它返回学生表中的所有记录和出勤表中匹配的记录。

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

CROSS JOIN (交叉连接)

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

交叉连接是 Teradata 指定的连接,它等效于乘积连接。交叉连接中将没有“ON”关键字。

语法

以下是 CROSS JOIN 语句的语法。

示例

考虑以下 CROSS JOIN 查询的示例。

执行上述查询后,它将生成以下输出。学生表中的学号 1001 与出勤表的每一条记录相连。

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

下一主题Teradata 子查询