MySQL中的连接中 on 后面接的条件和 where 后面接的条件有什么区别 |
您所在的位置:网站首页 › 关联条件写在where和on › MySQL中的连接中 on 后面接的条件和 where 后面接的条件有什么区别 |
需求背景:查询部门id为4的员工的信息
on条件
外连接语句及结果
外连接时on and 后面接条件是先对 A表 和 B表 先进行条件过滤,然后在进行连接,而外连接又会保留主表的全部内容,所以会导致出来符合条件的那一行有数据,其他不符合条件的数据都默认补上NUll。 select * from dept a left join employee b on a.id = b.dept_id and a.id = 4;图一 where条件 外连接语句及结果where 后面接条件是先对 A表 和 B表 进行连接,然后在进行条件过滤,虽然外连接会保留为空的数据,但是因为是后进行条件过滤的所以最后还是会将空数据进行清除,只会显示符合条件的数据。 select * from dept a left join employee b on a.id = b.dept_id where a.id = 4;图2 区别将图1和图2对比会发现外连接on后面接and条件查询出来的数据,如果有不符合条件的数据则会显示为空;而on后面接where条件查询出来的数据则会直接剥离不符合条件的数据,只保留符合条件的数据。on后面接条件是先过滤不符合条件的数据,然后再进行表的连接;而where后面接条件是先进行表的连接,再对不符合条件的数据进行过滤,不会对连接有影响。 图1 on and 条件 外连接 图2 where 条件 外连接 不带where,直接查询出主表所有数据 on中带有主表条件,凡是不满足主表条件的数据直接不跟副表做连接查询 on中带有副表条件的都会正常执行左连接查询逻辑 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |