LEFT JOIN 子句用于查询来自多个表的数据。它返回左表中的所有行和右表中的匹配行。
如果在右表中找不到匹配的行,则使用 NULL 代替显示。
以下图说明了两个结果集的左连接结果:
以下说明如何使用 LEFT JOIN 子句来连接两个表 T1 和 T2 :
在上面语法中, T1 和 T2 分别是左表和右表。
对于 T1 表中的每一行,查询将其与 T2 表中的所有行进行比较。 如果一对行导致连接谓词计算为
TRUE ,则将组合这些行中的列值以形成
新行,然后将其包含在结果集中。
如果左表( T1 )中的行没有与来自 T2 表的任何匹配行,则查询将左表中的行的列值与来自右表的每个列
值的 NULL 组合。
简而言之, LEFT JOIN 子句返回左表( T1 )中的所有行以及右表( T2 )中匹配的行或 NULL 值
以下语句使用 LEFT JOIN 子句查询 products 和 order_items 表中的数据:
order_id 列中的 NULL 列表表明相应的产品尚未销售给任何客户
可以使用 WHERE 子句来过滤结果集。
以下查询返回未出现在任何销售订单中的产品:
我对 SQL Server 左连接的理解:
- left join 查询返回左表中的所有行和右表中的匹配行
小案例:
--左连接
select *
from sales.order_items t2
left join production.products t1
on t1.product_id = t2.product_id and t2.order_id = 100
order by t2.order_id