LEFT JOIN 左连接要点
- 语法:FROM 左表 LEFT JOIN 右表 ON 左表.键 = 右表.键
- 左表所有行必出现,右表无匹配时补 NULL
- 用它找「孤儿数据」:右表主键 IS NULL 即为没匹配上的左表行
- 想筛右表,条件请写在 ON 里,写在 WHERE 会破坏外连接语义
- LEFT JOIN 结果行数至少等于左表行数
- 配合 COUNT / SUM 做「每人订单数」分组统计很顺手
LEFT JOIN 左连接示例
-- 列出所有用户,以及他们的订单(没下单的订单列为 NULL)
SELECT u.user_name, o.order_id, o.amount
FROM user u
LEFT JOIN orders o ON u.user_id = o.user_id;
-- 找出从来没下过单的用户
SELECT u.user_name
FROM user u
LEFT JOIN orders o ON u.user_id = o.user_id
WHERE o.order_id IS NULL;
避坑提醒:LEFT JOIN 后在 WHERE 里对右表字段加筛选(例如要求右表某列非 NULL),外连接会悄悄退化成内连接。