当前位置: 首页 > news >正文

SQL 语句中 left join 后用 on 还是 where,区别大了!

1. 核心区别

  • ON:指定连接条件。它在生成临时结果集时决定左表(LEFT JOIN左侧的表)中的行如何与右表匹配。即使右表中没有匹配行,左表的行仍会保留(右表列填充为NULL)。

  • WHERE:指定过滤条件。它在连接操作完成后,对临时结果集进行筛选。如果WHERE条件中引用了右表的列,并且要求这些列不为NULL,那么那些因未匹配而被填充为NULL的行就会被过滤掉,导致最终结果与INNER JOIN无异。

2. 逻辑执行顺序

SQL 的逻辑处理顺序大致为:

  1. FROM+JOIN(包括ON条件)生成中间结果。

  2. WHERE对中间结果进行行级过滤。

  3. 后续的GROUP BYHAVINGSELECTORDER BY等。

因此,ON中的条件在连接阶段生效,而WHERE在连接之后生效。

3. 直观示例

假设有两个表:

  • 员工表(左表):id,name,dept_id

  • 部门表(右表):id,dept_name

场景一:条件写在ON

sql

SELECT e.name, d.dept_name FROM employee e LEFT JOIN department d ON e.dept_id = d.id AND d.dept_name = '技术部';
  • 结果:所有员工都会出现。若员工所在部门不是“技术部”,则dept_name显示为NULL。这里ON中的额外条件只影响如何匹配右表,但不会剔除左表的行。

场景二:条件写在WHERE

sql

SELECT e.name, d.dept_name FROM employee e LEFT JOIN department d ON e.dept_id = d.id WHERE d.dept_name = '技术部';
  • 结果:只会返回部门为“技术部”的员工。那些没有部门或部门不是“技术部”的员工被WHERE过滤掉了,实际上相当于INNER JOIN

场景三:WHERE中允许NULL

若想保留所有员工,同时只过滤掉不符合条件的部门信息,应把条件写在ON中;若想筛选出有部门且部门名称为某值的员工,则写在WHERE中(但此时需注意可能过滤掉无部门的员工)。

4. 常见陷阱

  • 误将右表过滤条件放在WHERE中导致左表行丢失:如果想保留左表所有行,仅对右表有限制,必须将条件放在ON里。

  • 对右表列使用IS NULL筛选未匹配的行:例如WHERE d.id IS NULL可以用来找出左表中没有匹配部门的员工。这是LEFT JOIN的典型用法,此时WHERE是有意筛选NULL,不会丢失左表行。

5. 总结

  • ON:定义连接关系,控制左右表如何配对。适合放置与连接逻辑相关的条件,以及对右表的限制(如只匹配某些右表行)。

  • WHERE:定义最终结果集的过滤条件。适合放置与连接无关的全局过滤,或有意筛选未匹配的行(通过IS NULL)。

http://www.jsqmd.com/news/413740/

相关文章:

  • 2026烘干设备推荐:河南科勒夫设备科技银杏叶/石膏/污泥/酒糟/煤泥/三筒烘干机全解析 - 品牌推荐官
  • Go 语言系统编程与云原生开发实战(第23篇)
  • 以方盾护呼吸,以坚守安匠心
  • 中电金信 :以智能高效驱动数据生产,打造数据开发新范式
  • 2026年食用油精炼设备厂家推荐:郑州中赢机械设备有限公司,多品类油脂精炼解决方案 - 品牌推荐官
  • 2026年沈阳娱乐KTV推荐:PartyKIng派对之王,商务/主题/经典/豪华KTV全场景适配 - 品牌推荐官
  • 2026 生物医药及电子半导体行业厂房机电安装工程公司推荐 - 品牌2025
  • 期货与期权一体化平台参数输入表格设计
  • Go 语言系统编程与云原生开发实战(第22篇)
  • 2026年玻璃隔断专业厂家推荐:沈阳市苏家屯区双赢装饰装修材料经营部,全系玻璃隔断产品供应 - 品牌推荐官
  • 2026年波纹管厂家实力推荐:重庆元能管业,钢带/HDPE/双壁/MPVE波纹管全品类供应 - 品牌推荐官
  • 套期保值管理系统自动结算流程设计
  • 2026年川剧变脸服装/报名/学习/培训班推荐:华艺变脸,非遗技艺传承优选 - 品牌推荐官
  • 2026年工业包装万通板品牌评测报告:中空板周转箱、塑料中空板、防静电中空板、万通板、瓦楞板、PP中空板、中空板选择指南 - 优质品牌商家
  • 个人向 Linux 服务器开荒
  • 2026 生物医药及电子半导体厂房恒温恒湿工程专业公司推荐 - 品牌2025
  • 经典控制论PID-实例-30 - jack
  • 2026年安保服务与培训推荐:河南省鼎盛保安服务有限公司,校园/物业/海外多场景安保全覆盖 - 品牌推荐官
  • 自搭建 Tailscale DERP 服务器并使用客户端验证
  • 2026年彩印/手提/瓦楞/展示/定制箱子厂家推荐:崇州承文印刷厂全系产品供应 - 品牌推荐官
  • 2026年墨盒硒鼓回收厂家推荐:鑫赢耗材回收,原装/新旧/高价回收全品类服务 - 品牌推荐官
  • 2026年墙面/局部/老房/卫生间/二手房/厨卫翻新推荐:靓滔装饰专业焕新服务 - 品牌推荐官
  • 2026年水泵/大棚卷帘机智能控制器推荐:郑州海控电子科技,全系产品助力农业工业智能化升级 - 品牌推荐官
  • 2026年管链输送设备厂家推荐:山东意德粉体科技,粉体/链管/自动管链输送机全系解决方案 - 品牌推荐官
  • 每天学透1个知识点—Oracle性能调优之数据库的CPU突然飙升到100%
  • 2026通风排烟天窗推荐:靖江市坦贝尔环境科技,圆拱/薄型/电动采光等全系通风天窗专业供应 - 品牌推荐官
  • 【技术实践】JMG复牌场景下实时行情API的核心应用与问题解决
  • 2026年牧草/水稻/麦草/秸秆优质打捆网推荐:沈阳祥瑞塑业全系产品助力农业高效作业 - 品牌推荐官
  • 8周速成!从零到大模型开发,春招收割大厂Offer_2个月冲刺!S4-1春招冲刺营助你零基础拿下大厂Offer
  • 2026年 磁悬浮离心机厂家推荐排行榜:高效节能与静音运行技术领先品牌深度解析 - 品牌企业推荐师(官方)