📅  最后修改于: 2023-12-03 15:22:32.747000             🧑  作者: Mango
全外连接是SQL语言中的一种连接类型,同时包含左外连接和右外连接的所有行,其返回结果包含两个连接表中的所有行。如果连接谓词没有匹配的行,则用NULL值填充该行。
SELECT *
FROM table1
FULL OUTER JOIN table2
ON condition;
假设我们有两个数据表,一个是学生表(student),另一个是学生成绩表(grade)。我们可以使用全外连接来查找两个表中的所有数据,包括没有匹配的记录。
学生表 (student):
| id | name | | ---- | ----- | | 1 | Tom | | 2 | Jane | | 3 | Mary | | 4 | John |
学生成绩表 (grade):
| id | subject | grade | | ---- | ------- | ----- | | 1 | Math | 90 | | 2 | Math | 85 | | 1 | English | 80 | | 4 | English | 75 | | 5 | Physics | 95 |
现在我们想要得到一个包含两个表中所有数据的表格,如下所示:
| student.id | student.name | grade.subject | grade.grade | | ---------- | ------------ | ------------- | ----------- | | 1 | Tom | Math | 90 | | 2 | Jane | Math | 85 | | 1 | Tom | English | 80 | | 3 | Mary | NULL | NULL | | 4 | John | English | 75 | | NULL | NULL | Physics | 95 |
使用全外连接可以轻松获得该结果,SQL查询语句如下:
SELECT *
FROM student
FULL OUTER JOIN grade
ON student.id = grade.id;