您好,欢迎访问代理记账网站
移动应用 微信公众号 联系我们

咨询热线 -

电话 15988168888

联系客服
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

数据库关联查询中条件写在on之后和where中的区别

两张表:

emp

dept

首先看两个例子

1.SELECT * FROM emp LEFT JOIN dept ON emp.deptno=dept.deptno WHERE emp.deptno=2

将where换成and

2.SELECT * FROM emp LEFT JOIN dept ON emp.deptno=dept.deptno AND emp.deptno=2

3.SELECT * FROM emp LEFT JOIN dept ON emp.deptno=dept.deptno AND emp.deptno=1 

分析:首先第一个sql,两张表的联查,可以看出使用的是左连接的查询方式,左连接查询左边的表全部保留,右边的表只保留匹配的内容,不匹配的内容用null填充也就是说emp.deptno全部存在(包含1和2),然后关联查询的结果使用where条件中的emp.deptno=2将不是emp.deptno不是2的全部过滤掉

也就是说,可以理解where是将查询出来的结果过滤掉

第2,3相比可以看出,左连接查询左边的内容emp中的数据时全部展示的,但是这时候on的条件中使用and表示并且emp.deptno为2时,dept只会匹配emp.deptno中为2的内容,其他都为null填充,and的表示emp.deptno为1时,dept只会匹配emp.deptno为1的内容,其余都为null填充

可以得知,on条件中使用and连接在查询结果出来之前就开始过滤掉表格中dept不相符合的内容了


分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进