You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL中left join操作和直接查询左表全量数据有什么区别?

LEFT JOIN 和直接查询左表的核心区别

你看到的LEFT JOIN维恩图仅展示了行的保留规则,没有体现列合并、行扩增的特性,这是产生混淆的核心原因

1. 返回的列范围不同

直接查询左表仅会返回左表本身的所有字段,而LEFT JOIN会返回「左表全部字段 + 右表符合关联条件的字段」。
举个示例:

  • 左表student字段:stu_id, stu_name, class
  • 右表score字段:stu_id, subject, score

直接查询左表语句:

SELECT * FROM student;

返回结果仅包含stu_id, stu_name, class3个字段。

LEFT JOIN查询语句:

SELECT * FROM student LEFT JOIN score ON student.stu_id = score.stu_id;

返回结果包含stu_id(左表), stu_name, class, stu_id(右表), subject, score6个字段。

2. 返回的行数可能不同

如果右表中存在多条和左表某一行匹配的记录,LEFT JOIN后左表的对应行也会扩增为多条,和直接查询左表的行数不一致。
举个具体数据示例:
student表数据:

stu_idstu_nameclass
1张三1班
2李四1班

score表数据:

stu_idsubjectscore
1语文90
1数学95
  • 直接查询student表返回2行数据
  • 用上述LEFT JOIN语句查询返回3行数据:张三对应2行(语文、数学成绩各一行),李四对应1行(成绩表无匹配,右表字段为NULL)

补充:维恩图的局限性

你常看到的维恩图高亮左表全量区域,仅表示左表的所有行无论是否能匹配到右表,都会被保留,不代表返回的内容和直接查左表一致。只有当右表和左表是1:1匹配,且你仅查询左表字段时,二者的返回结果才会相同。

内容的提问来源于stack exchange,提问作者Chandra Sekhar Gudipati

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 00:06:04