MySql 连接查询中 on 和 where 的区别
在日常业务工作中,经常会遇到两表连接查询的需求,在使用两表连接时,会用到on或where,这两者有一定的区别;
1. 区别如下:
1、on 是关联条件,而where 是查询条件;
2、on是先对表进行筛选再生成关联表,where是先生成关联表再对关联表进行筛选,on执行的优先级高于left join,而where的优先级低于left join
3、使用on关键字时,会先根据on后面的条件进行筛选,条件为真时返回该行,由于on的优先级高于left join,所以left join关键字会把左表中没有匹配的所有行也都返回,然后生成临时表返回
where对与行的筛选是在left join之后的,也就是生成临时表之后才会对临时表进行筛选
2. 验证示例:
- on 查询:
SELECT * FROM
course c
LEFT JOIN
teacher t
ON c.t_id = t.t_id AND c.c_id <3
返回结果:可以看到英语、化学不满足条件,直接返回
- where查询:
SELECT * FROM
course c
LEFT JOIN
teacher t
ON c.t_id = t.t_id
where c.c_id <3
返回结果:对匹配结果进行筛选
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!