外连接查询
左连接
查询的结果为两个表匹配到的数据和左表特有的数据。对于右表中不存在的数据使用null填充。
语法:主表 left join 从表 on 连接条件 or 从表 right join 主表 on 连接条件 查询结果是一样的。左连接比较常用
最小示例(LEFT JOIN)
SELECT *
FROM a
LEFT JOIN b ON a.id = b.a_id;
含义:以 a 为主表,a 的每一行都会出现在结果中;如果 b 找不到匹配行,b 的列会是 NULL。
一个常见坑:把外连接写成了内连接
当你在 WHERE 里对右表字段进行条件过滤时,可能会把原本保留 NULL 的行过滤掉,结果看起来像“内连接”。
思路是:
- 关联条件放在
ON - 结果过滤放在
WHERE - 如果必须过滤右表字段但仍要保留主表行,需要把条件写进
ON或使用能兼容 NULL 的写法
右连接
查询的结果为两个表匹配到的数据和右表特有的数据。对于左表中不存在的数据使用null填充。
实务建议
- 右连接(RIGHT JOIN)在实际项目里相对少见
- 一般用 LEFT JOIN + 调换表顺序来表达相同含义,代码可读性更高

