RIGHT JOIN
RIGHT JOIN 是 LEFT JOIN 的镜像——保留右表的全部行,左表能匹配就填数据,匹配不上填 NULL。从功能上说,RIGHT JOIN 可以像 LEFT JOIN 一样,区别只在于谁做主表。实际上把 RIGHT JOIN 换成 LEFT JOIN 然后交换两表顺序,结果完全一样——所以大多数团队只用 LEFT JOIN,RIGHT JOIN 用得不多。
但在某些"从右往左看"的场景下,RIGHT JOIN 的表达更自然。比如"查所有的部门,列出每个部门的员工"——部门表是右表,员工表是左表,RIGHT JOIN 确保"所有部门"都出现。
以飞翔科技为例:
-- 所有部门及其员工(RIGHT JOIN 版)
SELECT e.emp_name, d.dept_name
FROM employees e
RIGHT JOIN departments d ON e.dept_code = d.dept_id;
-- 等价 LEFT JOIN 版(表顺序互换)
SELECT e.emp_name, d.dept_name
FROM departments d
LEFT JOIN employees e ON e.dept_code = d.dept_id;
-- 找出没有员工的部门
SELECT d.dept_name
FROM employees e
RIGHT JOIN departments d ON e.dept_code = d.dept_id
WHERE e.emp_id IS NULL;
三个例子展示了同一种信息用不同 JOIN 表达。习惯用 LEFT JOIN 的团队通常只会在需要"找出右表中孤立的行"时才偶尔用 RIGHT JOIN。