在 MySQL 中,并没有直接支持 FULL JOIN(全连接)语法,但可以通过 LEFT JOIN 和 RIGHT JOIN 的组合来实现全连接的效果。
全连接的含义是:返回两个表中所有匹配和不匹配的记录。当左表有记录而右表没有匹配时,右表字段显示为 NULL;当右表有记录而左表没有匹配时,左表字段显示为 NULL。
实现全连接的 SQL 语法如下:
SELECT *
FROM 表1
LEFT JOIN 表2 ON 表1.关联字段 = 表2.关联字段
UNION
SELECT *
FROM 表1
RIGHT JOIN 表2 ON 表1.关联字段 = 表2.关联字段;
-
UNION 用于合并两个查询结果,会自动去除重复记录
-
如果需要保留重复记录,可以使用
UNION ALL
-
实际使用时需要将
表1、表2 和 关联字段 替换为实际的表名和关联条件
假设有 students 表和 scores 表,查询所有学生及其成绩(包括没有成绩的学生和没有对应学生的成绩记录):
SELECT *
FROM students
LEFT JOIN scores ON students.id = scores.student_id
UNION
SELECT *
FROM students
RIGHT JOIN scores ON students.id = scores.student_id;
这种方式能达到与全连接相同的效果,是 MySQL 中实现全连接的标准做法。