MySQL中的连接中 on 后面接的条件和 where 后面接的条件有什么区别

您所在的位置:网站首页 关联条件写在where和on MySQL中的连接中 on 后面接的条件和 where 后面接的条件有什么区别

MySQL中的连接中 on 后面接的条件和 where 后面接的条件有什么区别

2024-07-13 15:52| 来源: 网络整理| 查看: 265

需求背景:查询部门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