SQL INNER JOIN与LEFT JOIN区别_JOIN结果集对比

2次阅读

inner join仅保留两表匹配的行,left join保留左表全部行且右表无匹配时填充NULL;前者结果行数≤任一单表,后者行数=左表行数;inner join适用于查共有数据,left join适用于查主表全量+可选关联数据。

SQL INNER JOIN与LEFT JOIN区别_JOIN结果集对比

INNER JOIN 只保留两张表都匹配的行,LEFT JOIN 保留左表全部行,右表不匹配的部分用 NULL 填充。

匹配逻辑不同

INNER JOIN 要求左右两表的连接字段值必须同时存在且相等,才会出现在结果中;只要某行在右表找不到对应记录,哪怕左表有数据,也会被直接过滤掉。

LEFT JOIN 以左表为基准,左表每一行都会出现在结果里。若右表无匹配项,对应列全为 NULL。

结果行数差异明显

  • INNER JOIN 行数 ≤ 左表行数,也 ≤ 右表行数,通常少于任一单表
  • LEFT JOIN 行数 = 左表行数(可能因左表某行在右表有多条匹配而增多)

适用场景有侧重

查“共有的数据”,比如“哪些客户下过订单”,用 INNER JOIN 更精准;

查“完整的主表信息 + 可选的关联数据”,比如“所有客户及其订单金额(没有订单的显示为 NULL)”,必须用 LEFT JOIN。

NULL 值是关键识别标志

LEFT JOIN 结果中右表字段出现 NULL,说明该行在右表无匹配;

INNER JOIN 结果中不会出现 NULL(除非原字段本身存了 NULL)。

理解连接类型,本质是明确“以哪张表为主、要不要保留不匹配的记录”。选错 JOIN 类型,轻则漏数据,重则业务逻辑出错。

text=ZqhQzanResources