sql连接查询中on和where后条件区别

2017-06-23  邓智群 

先上实例

有两张表:employee和wages表,表数据如下:

emplyee表:


wages表:


1、先来看一下inner join,条件在where后,select * from employee ey inner join wages wg on ey.id=wg.emp_id where ey.id=1,结果如下:


条件在on后,select * from employee ey inner join wages wg on ey.id=wg.emp_id and ey.id=1,结果如下:


2、在验证一下left join,条件在where后,select * from employee ey left join wages wg on ey.id=wg.emp_id where ey.id=1,结果如下:


条件在on后,select * from employee ey left join wages wg on ey.id=wg.emp_id and ey.id=1,结果如下:


3、right join,条件在where后,select * from employee ey right join wages wg on ey.id=wg.emp_id where ey.id=1,结果如下:


条件在on后,select * from employee ey right join wages wg on ey.id=wg.emp_id and ey.id=1,结果如下:.



结论:又上面可以看出,inner join时,条件在on后还是where后结果都一样,left join和right join结果就不一样了,where条件是在on条件生成结果集以后进一步的过滤,on条件是生成一个结果集,他不管where后面是否有条件。所以对于left join和right join要注意条件放的地方。

800°/7990 人阅读/1 条评论 发表评论

苍天一声笑  2017-06-26

一看就懂


登录 后发表评论