SQL FULL JOIN
在 SQL 中,FULL JOIN(全外连接)是一种表连接(JOIN)操作,它会返回左侧表(第一个表)和右侧表(第二个表)中的所有行,同时按照连接条件将它们结合起来。如果某个表中的行在另一个表中没有匹配的行,则对应位置会用 NULL 填充。
基本语法
SELECT 列列表 FROM 表1 FULL JOIN 表2 ON 表1.列名 = 表2.列名;
在这个语法中:
表1 是左侧表,表2 是右侧表。
列名 是用于连接两个表的列名。
举例说明:
如有2个表,teachers(教师信息表)和colleages(学院信息表)
teachers表
teacher_id | teachar_name | colleage_id |
1 | 张三 | 001 |
2 | 李四 | 002 |
3 | 王五 | 005 |
colleages表
colleage_id | colleage_name |
001 | 英语学院 |
002 | 计算机学院 |
003 | 物理学院 |
现在,我们可以使用 FULL JOIN 来获取教师id、姓名、所属所属学院名称:
SELECT teacher_id, teacher_name, colleage_name FROM teachers FULL JOIN colleages ON teachers.colleage_id = colleages.colleage_id;
由于Mysql不支持FULL JOIN操作,可通过下面的方式来实现:
SELECT teacher_id, teacher_name, colleage_name FROM teachers LEFT JOIN colleages ON teachers.colleage_id = colleages.colleage_id UNION SELECT teacher_id, teacher_name, colleage_name FROM teachers RIGHT JOIN colleages ON teachers.colleage_id = colleages.colleage_id;
将返回以下结果:
teacher_id | teacher_name | colleage_name |
1 | 张三 | 英语学院 |
2 | 李四 | 计算机学院 |
3 | 王五 | NULL |
NULL | NULL | 物理学院 |