在 MySQL 中,并沒有直接支持 FULL JOIN(全連接)語法,但可以通過 LEFT JOIN 和 RIGHT JOIN 的組合來實現(xiàn)全連接的效果。
全連接的含義是:返回兩個表中所有匹配和不匹配的記錄。當左表有記錄而右表沒有匹配時,右表字段顯示為 NULL;當右表有記錄而左表沒有匹配時,左表字段顯示為 NULL。
實現(xiàn)全連接的 SQL 語法如下:
SELECT *
FROM 表1
LEFT JOIN 表2 ON 表1.關(guān)聯(lián)字段 = 表2.關(guān)聯(lián)字段
UNION
SELECT *
FROM 表1
RIGHT JOIN 表2 ON 表1.關(guān)聯(lián)字段 = 表2.關(guān)聯(lián)字段;
-
UNION 用于合并兩個查詢結(jié)果,會自動去除重復(fù)記錄
-
如果需要保留重復(fù)記錄,可以使用
UNION ALL
-
實際使用時需要將
表1、表2 和 關(guān)聯(lián)字段 替換為實際的表名和關(guān)聯(lián)條件
假設(shè)有 students 表和 scores 表,查詢所有學(xué)生及其成績(包括沒有成績的學(xué)生和沒有對應(yīng)學(xué)生的成績記錄):
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 中實現(xiàn)全連接的標準做法。