📅  最后修改于: 2021-01-11 11:26:37             🧑  作者: Mango
连接用于合并多个表中的记录。根据公共列和这些表中的值连接表。
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%
左外部联接和右外部联接也合并了来自多个表的结果。
句法
以下是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%