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

  返回结果:对匹配结果进行筛选

posted @   小log  阅读(2104)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示