SQLPathLab
表连接 · 基础

LEFT JOIN

保留左表全部记录,同时带出右表匹配数据。

简介

LEFT JOIN 保留左表全部记录,并带出右表中满足 ON 条件的数据;没有匹配时,右表字段返回 NULL。若随后在 WHERE 中限制右表字段,未匹配行可能被过滤掉,使结果接近 INNER JOIN。需要保留未匹配行的右表条件通常应谨慎放在 ON 中。

基础语法

SELECT o.id, c.name FROM orders o LEFT JOIN customers c ON o.customer_id = c.id;

示例

LEFT JOIN 示例

保留全部 orders,并观察 customer_id 104 没有匹配客户时 name 返回 NULL。

示例数据表

表名:orders
orders
idcustomer_id
1 101
2 102
3 101
4 104
表名:customers
customers
idname
101 Alice
102 Bob
103 Cindy

运行结果

result
idname
1 Alice
2 Bob
3 Alice
4 NULL

常见问题

LEFT JOIN 和 INNER JOIN 最大区别是什么?

LEFT JOIN 保留左表全部记录;INNER JOIN 只保留两边都匹配的记录。

为什么右表字段会出现 NULL?

说明左表记录没有匹配到右表记录,所以右表字段返回 NULL。

LEFT JOIN 后再写 WHERE 要注意什么?

如果在 WHERE 中筛选右表字段,可能会把未匹配记录过滤掉,效果接近 INNER JOIN。

标签

常用表连接

这篇内容是否清楚?