左连接(LEFT JOIN / LEFT OUTER JOIN) 用于以“左表”为主,保留左表全部记录,右表只匹配存在的部分,匹配不到则补 NULL。
下面按场景 + 例子说明更适合用左连接的情况。
场景:一定要看左边全部数据,右边有没有都行。
例子:
SELECT u.id, u.name, o.order_id
FROM user u
LEFT JOIN orders o
ON u.id = o.user_id;
✅ 没有订单的用户也会显示(订单为 NULL)
场景:判断左表记录在右表是否有关联。
例子:查「从未下过单的用户」
SELECT u.id
FROM user u
LEFT JOIN orders o
ON u.id = o.user_id
WHERE o.order_id IS NULL;
✅ 左连接 + IS NULL 是经典“缺失关系”写法
场景:报表维度不能少。
例子:
SELECT p.name, SUM(s.amount)
FROM product p
LEFT JOIN sales s
ON p.id = s.product_id
GROUP BY p.name;
✅ 没卖出的商品也保留(销量为 NULL / 0)
场景:主数据 + 可选配置。
例子:
SELECT e.name, d.dept_name
FROM employee e
LEFT JOIN department d
ON e.dept_id = d.id;
场景:A 是核心,B、C 是补充。
A
LEFT JOIN B
LEFT JOIN C
✅ 保证 A 永远不丢
❌ 只要“两边都存在”的数据
→ 用 INNER JOIN
❌ 以右表为主
→ 用 RIGHT JOIN(但很少用,通常改左连接)
❌ 只关心交集结果
→ 左连接会拖慢性能
左连接适合:以左表为主,右表可有可无,不能丢左表数据。
如果你有具体业务表结构,我可以直接帮你写最合适的 JOIN。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。