对比
对比
-- 保留左表全部行:右表不匹配则为 NULL
SELECT * FROM orders o
LEFT JOIN users u ON u.id = o.user_id;
-- 过滤条件放在 WHERE:左表中配不到的行被剔除
SELECT * FROM orders o
LEFT JOIN users u ON u.id = o.user_id
WHERE u.status = 1;把过滤放进 ON
把过滤放进 ON
SELECT * FROM orders o
LEFT JOIN users u
ON u.id = o.user_id
AND u.status = 1; -- 保留左表全部行,只有匹配且 status=1 的右侧行被连上| ON | 描述两表如何配对(含附加匹配条件) |
|---|---|
| WHERE | 作用于连接之后的结果行 |
| 外连接结论 | 右表列的过滤条件放 WHERE 会让外连接结果接近内连接 |